]> err.no Git - dpkg/commitdiff
Replace strdup plus error checking usage with a new m_strdup function
authorGuillem Jover <guillem@debian.org>
Mon, 21 Jan 2008 08:30:33 +0000 (10:30 +0200)
committerGuillem Jover <guillem@debian.org>
Mon, 21 Jan 2008 08:30:33 +0000 (10:30 +0200)
Closes: #379028
ChangeLog
debian/changelog
dpkg-deb/build.c
lib/database.c
lib/dpkg.h
lib/mlib.c
lib/myopt.c
lib/tarfn.c
src/configure.c
src/help.c
src/main.c

index f8bdccd89f7af9e6a5651098547760fe767df87c..0bd6ad65e1e0bf173f4d985d693ef77e3bf851b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2008-01-21  Guillem Jover  <guillem@debian.org>
+
+       * lib/mlib.c (m_strdup): New function.
+       * lib/dpkg.h (m_strdup): New declaration.
+       * lib/tarfn.c: Include <dpkg.h>.
+       (TarExtractor): Use m_strdup instead of strdup.
+       * lib/database.c (findpackage): Likewise.
+       * lib/myopt.c (myfileopt): Likewise.
+       * dpkg-deb/build.c (getfi): Likewise.
+       * src/configure.c (md5hash): Likewise.
+       * src/help.c (vbuildarglist): Likewis.
+       * src/main.c (execbackend): Likewise.
+       (commandfd): Likewise.
+
 2008-01-21  Guillem Jover  <guillem@debian.org>
 
        * configure.ac: Bump version to 1.14.17~.
index 401ee04da577b7c8acc1ee9242d71c259663dd3b..fa4a629e06736e0558b5159b0f9a4703c8934bb9 100644 (file)
@@ -1,6 +1,8 @@
 dpkg (1.14.17) UNRELEASED; urgency=low
 
-  *
+  [ Guillem Jover ]
+  * Replace strdup plus error checking usage with a new m_strdup function.
+    Closes: #379028
 
  -- Guillem Jover <guillem@debian.org>  Mon, 21 Jan 2008 10:11:55 +0200
 
index 1046c7effb46104be66a55a23708d380d3b329e2..a38109c369cfaeb3ba29759f12ab3fd6a9df7ef9 100644 (file)
@@ -133,7 +133,7 @@ static struct _finfo* getfi(const char* root, int fd) {
 
   fi=(struct _finfo*)malloc(sizeof(struct _finfo));
   lstat(fn, &(fi->st));
-  fi->fn=strdup(fn+rl+1);
+  fi->fn = m_strdup(fn + rl + 1);
   fi->next=NULL;
   return fi;
 }
index 49013b7cb986055d4e2ae9335e8fe05ee823296a..398af9eeb9e44d8103a5d44338349e758c2316e8 100644 (file)
@@ -118,10 +118,8 @@ int informative(struct pkginfo *pkg, struct pkginfoperfile *info) {
 
 struct pkginfo *findpackage(const char *inname) {
   struct pkginfo **pointerp, *newpkg;
-  char *name = strdup(inname), *p;
+  char *name = m_strdup(inname), *p;
 
-  if (name == NULL)
-    ohshite(_("couldn't allocate memory for strdup in findpackage(%s)"),inname);
   p= name;
   while(*p) { *p= tolower(*p); p++; }
   
index d49fdbd116ed454197612cd4a07db4fdefcd6359..8d36fc88cbb2b8062743527f9115a13ed0a41452 100644 (file)
@@ -222,6 +222,7 @@ void warningf(const char *fmt, ...) PRINTFFORMAT(1, 2);
 void setcloexec(int fd, const char* fn);
 void *m_malloc(size_t);
 void *m_realloc(void*, size_t);
+char *m_strdup(const char *str);
 int m_fork(void);
 void m_dup2(int oldfd, int newfd);
 void m_pipe(int fds[2]);
index 2842d88178bcc483daa9a67fa64ba1af22a2a894..da9b1dd8ca2c75c53fd7d3b4eadf54477a0ccbf9 100644 (file)
@@ -67,6 +67,20 @@ void *m_realloc(void *r, size_t amount) {
   return r;
 }
 
+char *
+m_strdup(const char *str)
+{
+  char *new_str;
+
+  onerr_abort++;
+  new_str = strdup(str);
+  if (!new_str)
+    ohshite(_("failed to allocate memory"));
+  onerr_abort--;
+
+  return new_str;
+}
+
 static void print_error_forked(const char *emsg, const char *contextstring) {
   fprintf(stderr, _("%s (subprocess): %s\n"), thisname, emsg);
 }
index 5aed2f337c65c8a21a80daa13947906c5dda85b9..84980a746337d4c3887ad456aa310ed1cfcf4ccd 100644 (file)
@@ -75,7 +75,8 @@ void myfileopt(const char* fn, const struct cmdinfo* cmdinfos) {
     if (cip->takesvalue) {
       if (!opt) ohshite(_("configuration error: %s needs a value"), linebuf);
       if (cip->call) cip->call(cip,opt);
-      else *cip->sassignto= strdup(opt);
+      else
+        *cip->sassignto = m_strdup(opt);
     } else {
       if (opt) ohshite(_("configuration error: %s does not take a value"), linebuf);
       if (cip->call) cip->call(cip,NULL);
index e498da7d15f4504cb1878e454918b5cf604e5497..3325d50e81b5728510f29e5ff94e60171172f03d 100644 (file)
@@ -14,6 +14,7 @@
 #include <grp.h>
 #include <errno.h>
 #include <tarfn.h>
+#include <dpkg.h>
 
 struct TarHeader {
        char Name[100];
@@ -195,17 +196,8 @@ TarExtractor(
                        break;
                case SymbolicLink:
                        memcpy(&symListBottom->h, &h, sizeof(TarInfo));
-                       if ((symListBottom->h.Name = strdup(h.Name)) == NULL) {
-                               status = -1;
-                               errno = 0;
-                               break;
-                       }
-                       if ((symListBottom->h.LinkName = strdup(h.LinkName)) == NULL) {
-                               free(symListBottom->h.Name);
-                               status = -1;
-                               errno = 0;
-                               break;
-                       }
+                       symListBottom->h.Name = m_strdup(h.Name);
+                       symListBottom->h.LinkName = m_strdup(h.LinkName);
                        if ((symListBottom->next = malloc(sizeof(symlinkList))) == NULL) {
                                free(symListBottom->h.LinkName);
                                free(symListBottom->h.Name);
index 800054f85a030e5892e847006cc893e239d8c123..9c73f8dc7d7fb57e834f6b7854830b984904a858 100644 (file)
@@ -410,11 +410,11 @@ static void md5hash(struct pkginfo *pkg, char **hashbuf, const char *fn) {
                pop_cleanup(ehflag_normaltidy); /* fd= open(cdr.buf) */
                close(fd);
        } else if (errno==ENOENT) {
-               *hashbufstrdup(NONEXISTENTFLAG);
+               *hashbuf = m_strdup(NONEXISTENTFLAG);
        } else {
                fprintf(stderr, _("dpkg: %s: warning - unable to open conffile %s for hash: %s\n"),
                                pkg->name, fn, strerror(errno));
-               *hashbufstrdup("-");
+               *hashbuf = m_strdup("-");
        }
 }
 
index b6401ab973c0f64d90a1d98ab2232108fa984d68..3b9bc76c6ce5cf1992df536d026bffdf48255f9f 100644 (file)
@@ -204,7 +204,8 @@ static char *const *vbuildarglist(const char *scriptname, va_list ap) {
 
   i=0;
   if(bufs[0]) free(bufs[0]);
-  bufs[i++]= strdup(scriptname); /* yes, cast away const because exec wants it that way */
+  /* Yes, cast away const because exec wants it that way */
+  bufs[i++] = m_strdup(scriptname);
   for (;;) {
     assert(i < PKGSCRIPTMAXARGS);
     nextarg= va_arg(ap,char*);
index 4f2f3d05aeaa4b5e3a6dfc31a0bfc77ab3125637..9ffc161354fc43714c3fff411645111b51aa92c4 100644 (file)
@@ -493,9 +493,8 @@ void execbackend(const char *const *argv) {
   if (!nargv)
     ohshite(_("couldn't malloc in execbackend"));
 
-  nargv[i] = strdup(cipaction->parg);
-  if (!nargv[i])
-    ohshite(_("couldn't strdup in execbackend"));
+  nargv[i] = m_strdup(cipaction->parg);
+
   i++, offset++;
 
   if (pass_admindir) {
@@ -515,11 +514,9 @@ void execbackend(const char *const *argv) {
   i++, offset++;
 
   /* Copy arguments from argv to nargv. */
-  for (; i <= argc; i++) {
-    nargv[i] = strdup(argv[i - offset]);
-    if (!nargv[i])
-      ohshite(_("couldn't strdup in execbackend"));
-  }
+  for (; i <= argc; i++)
+    nargv[i] = m_strdup(argv[i - offset]);
+
   nargv[i] = NULL;
 
   execvp(cipaction->parg, nargv);
@@ -609,7 +606,8 @@ printf("line=`%*s'\n",(int)linevb.used,linevb.buf);
  * least.
  */
     for(i=1;i<argc;i++)
-       if (newargs[i]) newargs[i]=strdup(newargs[i]);
+      if (newargs[i])
+        newargs[i] = m_strdup(newargs[i]);
 
     cipaction= NULL;
     myopt((const char *const**)&newargs,cmdinfos);