struct elfinfo *e = malloc(sizeof(*e));
int phsz;
+ assert(e);
e->fd = fd;
if (pread(fd, &e->e, sizeof(e->e), 0) != sizeof(e->e)) {
phsz = sizeof(ESZ(Phdr)) * e->e.e_phnum;
e->p = malloc(phsz);
+ assert(e->p);
if (pread(fd, e->p, phsz, e->e.e_phoff) != phsz) {
fprintf(stderr, "can't read phdr: %s\n", strerror(errno));
int intfd;
int baseaddr_set;
+ assert(buf);
pread(fd, buf, ph->p_filesz, ph->p_offset);
buf[ph->p_filesz] = '\0';
from = vg_argv;
vg_argv = malloc( (vg_argc + env_arg_count + f1_arg_count
+ f2_arg_count + 2) * sizeof(char **));
+ vg_assert(vg_argv);
to = vg_argv;
/* copy argv[0] */
vg_argc++;
vg_argv = malloc(sizeof(char **) * (vg_argc + 1));
+ vg_assert(vg_argv);
cpp = vg_argv;
library */
inject_path_len = sizeof(inject_so) + vgliblen + preloadlen + 16;
inject_path = malloc(inject_path_len);
+ vg_assert(inject_path);
if (preload)
snprintf(inject_path, inject_path_len, "%s/%s:%s",
/* Allocate a new space */
ret = malloc(sizeof(char *) * (envc+3+1)); /* 3 new entries + NULL */
+ vg_assert(ret);
/* copy it over */
for (cpp = ret; *origenv; )
if (!scan_colsep(*cpp + ld_library_path_len, contains)) {
int len = strlen(*cpp) + vgliblen*2 + 16;
char *cp = malloc(len);
+ vg_assert(cp);
snprintf(cp, len, "%s%s:%s",
ld_library_path, VG_(libdir),
} else if (memcmp(*cpp, ld_preload, ld_preload_len) == 0) {
int len = strlen(*cpp) + inject_path_len;
char *cp = malloc(len);
+ vg_assert(cp);
snprintf(cp, len, "%s%s:%s",
ld_preload, inject_path, (*cpp)+ld_preload_len);
if (!ld_library_path_done) {
int len = ld_library_path_len + vgliblen*2 + 16;
char *cp = malloc(len);
+ vg_assert(cp);
snprintf(cp, len, "%s%s", ld_library_path, VG_(libdir));
if (!ld_preload_done) {
int len = ld_preload_len + inject_path_len;
char *cp = malloc(len);
+ vg_assert(cp);
snprintf(cp, len, "%s%s",
ld_preload, inject_path);