Okay to add missing strdup checks to ldconfig? Index: libexec/ld.so/ldconfig/library.c =================================================================== RCS file: /cvs/src/libexec/ld.so/ldconfig/library.c,v retrieving revision 1.9 diff -u -p -r1.9 library.c --- libexec/ld.so/ldconfig/library.c 10 Jun 2015 20:50:05 -0000 1.9 +++ libexec/ld.so/ldconfig/library.c 5 Sep 2015 12:21:53 -0000 @@ -60,6 +60,8 @@ load_lib(const char *name, struct elf_ob char *lpath, *lname; lpath = strdup(name); + if (lpath == NULL) + return (1); lname = strrchr(lpath, '/'); if (lname == NULL || lname[1] == '\0') { free(lpath); Index: libexec/ld.so/ldconfig/prebind.c =================================================================== RCS file: /cvs/src/libexec/ld.so/ldconfig/prebind.c,v retrieving revision 1.29 diff -u -p -r1.29 prebind.c --- libexec/ld.so/ldconfig/prebind.c 3 Jun 2015 02:24:36 -0000 1.29 +++ libexec/ld.so/ldconfig/prebind.c 5 Sep 2015 12:21:53 -0000 @@ -518,6 +518,10 @@ elf_load_object(void *pexe, const char * object->load_base = lbase; object->load_name = strdup(name); + if (object->load_name == NULL) { + printf("unable to allocate object for %s\n", name); + exit(10); + } phdr = (Elf_Phdr *)((char *)pexe + ehdr->e_phoff); for (i = 0; i < ehdr->e_phnum; i++) { @@ -529,6 +533,11 @@ elf_load_object(void *pexe, const char * /* XXX can only occur in programs */ curbin->interp = strdup((char *)((char *)pexe + phdr[i].p_offset)); + if (curbin->interp == NULL) { + printf("unable to allocate object for %s\n", + name); + exit(10); + } break; default: break;