summaryrefslogtreecommitdiff
path: root/session.c
diff options
context:
space:
mode:
authorderaadt@openbsd.org <deraadt@openbsd.org>2017-05-31 09:15:42 +0000
committerDamien Miller <djm@mindrot.org>2017-06-01 14:55:22 +1000
commit9e509d4ec97cb3d71696f1a2f1fdad254cbbce11 (patch)
tree8f33ae8fa9bcfa0d9c80d0e0f1555a814a844bc1 /session.c
parentdc5dc45662773c0f7745c29cf77ae2d52723e55e (diff)
upstream commit
Switch to recallocarray() for a few operations. Both growth and shrinkage are handled safely, and there also is no need for preallocation dances. Future changes in this area will be less error prone. Review and one bug found by markus Upstream-ID: 822d664d6a5a1d10eccb23acdd53578a679d5065
Diffstat (limited to 'session.c')
-rw-r--r--session.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/session.c b/session.c
index cbd27c689..4ef48ecd6 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.287 2017/05/31 08:09:45 markus Exp $ */ 1/* $OpenBSD: session.c,v 1.288 2017/05/31 09:15:42 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -1711,8 +1711,8 @@ session_new(void)
1711 return NULL; 1711 return NULL;
1712 debug2("%s: allocate (allocated %d max %d)", 1712 debug2("%s: allocate (allocated %d max %d)",
1713 __func__, sessions_nalloc, options.max_sessions); 1713 __func__, sessions_nalloc, options.max_sessions);
1714 tmp = xreallocarray(sessions, sessions_nalloc + 1, 1714 tmp = xrecallocarray(sessions, sessions_nalloc,
1715 sizeof(*sessions)); 1715 sessions_nalloc + 1, sizeof(*sessions));
1716 if (tmp == NULL) { 1716 if (tmp == NULL) {
1717 error("%s: cannot allocate %d sessions", 1717 error("%s: cannot allocate %d sessions",
1718 __func__, sessions_nalloc + 1); 1718 __func__, sessions_nalloc + 1);
@@ -2036,8 +2036,8 @@ session_env_req(Session *s)
2036 for (i = 0; i < options.num_accept_env; i++) { 2036 for (i = 0; i < options.num_accept_env; i++) {
2037 if (match_pattern(name, options.accept_env[i])) { 2037 if (match_pattern(name, options.accept_env[i])) {
2038 debug2("Setting env %d: %s=%s", s->num_env, name, val); 2038 debug2("Setting env %d: %s=%s", s->num_env, name, val);
2039 s->env = xreallocarray(s->env, s->num_env + 1, 2039 s->env = xrecallocarray(s->env, s->num_env,
2040 sizeof(*s->env)); 2040 s->num_env + 1, sizeof(*s->env));
2041 s->env[s->num_env].name = name; 2041 s->env[s->num_env].name = name;
2042 s->env[s->num_env].val = val; 2042 s->env[s->num_env].val = val;
2043 s->num_env++; 2043 s->num_env++;