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;