Skip to content

Commit 70deeae

Browse files
committed
If args and envs are empty do not free them.
1 parent 6b4b555 commit 70deeae

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

runns.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,20 @@ main(int argc, char **argv)
164164
args = 0;
165165

166166
// Read environment variables
167-
envs = (char **)malloc(++hdr.env_sz*sizeof(char *));
168-
for (int i = 0; i < hdr.env_sz - 1; i++)
167+
if (hdr.env_sz)
169168
{
170-
size_t env_sz;
171-
ret = read(data_sockfd, (void *)&env_sz, sizeof(size_t));
172-
envs[i] = (char *)malloc(env_sz);
173-
ret = read(data_sockfd, (void *)envs[i], env_sz);
169+
envs = (char **)malloc(++hdr.env_sz*sizeof(char *));
170+
for (int i = 0; i < hdr.env_sz - 1; i++)
171+
{
172+
size_t env_sz;
173+
ret = read(data_sockfd, (void *)&env_sz, sizeof(size_t));
174+
envs[i] = (char *)malloc(env_sz);
175+
ret = read(data_sockfd, (void *)envs[i], env_sz);
176+
}
177+
envs[hdr.env_sz - 1] = 0;
174178
}
175-
envs[hdr.env_sz - 1] = 0;
179+
else
180+
envs = 0;
176181

177182
close(data_sockfd);
178183

@@ -281,8 +286,10 @@ free_tvars()
281286
{
282287
free(program);
283288
free(netns);
284-
for (size_t i = 1; i < hdr.args_sz - 3; free(args[i++]));
285-
for (size_t i = 0; i < hdr.env_sz - 2; free(envs[i++]));
289+
if (args)
290+
for (size_t i = 1; i < hdr.args_sz - 3; free(args[i++]));
291+
if (envs)
292+
for (size_t i = 0; i < hdr.env_sz - 2; free(envs[i++]));
286293
free(envs);
287294
free(args);
288295
memset((void *)&hdr, 1, sizeof(hdr));

0 commit comments

Comments
 (0)