summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpvalchev <pvalchev@openbsd.org>2003-09-25 07:15:40 +0000
committerpvalchev <pvalchev@openbsd.org>2003-09-25 07:15:40 +0000
commit4a2d5e93a5feb47fe9a8f40a2f7b87f8f62d7758 (patch)
tree7f98167761dd58e2528f733df859fbb41242fd28
parentsync (diff)
downloadwireguard-openbsd-4a2d5e93a5feb47fe9a8f40a2f7b87f8f62d7758.tar.xz
wireguard-openbsd-4a2d5e93a5feb47fe9a8f40a2f7b87f8f62d7758.zip
correct realloc (no ptr = realloc(ptr, ...)); comment & ok deraadt
-rw-r--r--libexec/telnetd/sys_term.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/libexec/telnetd/sys_term.c b/libexec/telnetd/sys_term.c
index 2f548b2a45e..14acb909f62 100644
--- a/libexec/telnetd/sys_term.c
+++ b/libexec/telnetd/sys_term.c
@@ -1376,10 +1376,18 @@ start_login(const char *host, int autologin, char *name)
static void
addarg(struct arg_val *argv, const char *val)
{
- if(argv->size <= argv->argc+1) {
- argv->argv = realloc(argv->argv, sizeof(char*) * (argv->size + 10));
- if (argv->argv == NULL)
+ const char **tmp;
+
+ if (argv->size <= argv->argc+1) {
+ tmp = realloc(argv->argv, sizeof(char*) * (argv->size + 10));
+ if (tmp == NULL) {
+ if (argv->argv)
+ free(argv->argv);
+ argv->argv = NULL;
+ argv->size = 0;
fatal (net, "realloc: out of memory");
+ }
+ argv->argv = tmp;
argv->size+=10;
}
argv->argv[argv->argc++] = val;