this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

xcselect: fix calling execv with invalid argv

authored by

Viktor Oreshkin and committed by
Viktor Oreshkin
e34f7a98 74bbec85

+10 -2
+10 -2
src/xcselect/xcselect.c
··· 237 237 buf[length] = 0; 238 238 strcat(buf, "usr/bin/xcrun"); 239 239 240 - argv2 = (char**) __builtin_alloca((argc+2) * sizeof(char*)); 240 + // +3: buf, tool, NULL 241 + argv2 = (char**) __builtin_alloca((argc+3) * sizeof(char*)); 241 242 argv2[j++] = buf; 242 243 243 244 if (tool != NULL) ··· 245 246 246 247 for (int i = 0; i < argc; i++, j++) 247 248 argv2[j] = argv[i]; 249 + argv2[j] = NULL; 248 250 249 251 execv(buf, argv2); 250 252 fprintf(stderr, "xcrun: developer path '%s' is invalid, failed to execute '%s': %s\n", ··· 257 259 strcpy(buf, "/usr/libexec/DeveloperTools/"); 258 260 strcat(buf, tool); 259 261 260 - execv(buf, argv); 262 + char** argv2 = (char **) __builtin_alloca((argc+1+1) * sizeof(char*)); 263 + argv2[0] = buf; 264 + for (int i = 0; i < argc; i++) 265 + argv2[i+1] = argv[i]; 266 + argv2[argc+1] = NULL; 267 + 268 + execv(buf, argv2); 261 269 fprintf(stderr, "xcrun: failed to exec '%s': %s\n", buf, strerror(errno)); 262 270 } 263 271 else