strdup -> xstrdup
authorChristos Zoulas <christos@zoulas.com>
Thu, 6 Oct 2011 14:32:24 +0000 (10:32 -0400)
committerChristos Zoulas <christos@zoulas.com>
Thu, 6 Oct 2011 14:32:24 +0000 (10:32 -0400)
tidy up snprintf wrong length

amd/info_union.c

index 4011d39dfdde991b1ceb32f096d3e3859eb24e6e..74cc9ba2d38c15cf9d841dc01ae67e36f8ea19ec 100644 (file)
@@ -77,7 +77,7 @@ union_init(mnt_map *m, char *map, time_t *tp)
 int
 union_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
 {
-  char *mapd = strdup(map + UNION_PREFLEN);
+  char *mapd = xstrdup(map + UNION_PREFLEN);
   char **v = strsplit(mapd, ':', '\"');
   char **p;
   size_t l;
@@ -95,14 +95,15 @@ union_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
 int
 union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
 {
-  char *mapd = strdup(map + UNION_PREFLEN);
+  static const char fseq[] = "fs:=";
+  char *mapd = xstrdup(map + UNION_PREFLEN);
   char **v = strsplit(mapd, ':', '\"');
   char **dir;
 
   /*
    * Add fake /defaults entry
    */
-  (*fn) (m, strdup("/defaults"), strdup("type:=link;opts:=nounmount;sublink:=${key}"));
+  (*fn) (m, xstrdup("/defaults"), xstrdup("type:=link;opts:=nounmount;sublink:=${key}"));
 
   for (dir = v; *dir; dir++) {
     size_t l;
@@ -113,7 +114,7 @@ union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
       plog(XLOG_USER, "Cannot read directory %s: %m", *dir);
       continue;
     }
-    l = strlen(*dir) + 5;
+    l = strlen(*dir) + sizeof(fseq);
 
     dlog("Reading directory %s...", *dir);
     while ((dp = readdir(dirp))) {
@@ -125,8 +126,8 @@ union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
 
       dlog("... gives %s", dp->d_name);
       val = xmalloc(l);
-      xsnprintf(val, l + 5, "fs:=%s", *dir);
-      (*fn) (m, strdup(dp->d_name), val);
+      xsnprintf(val, l, "%s%s", fseq, *dir);
+      (*fn) (m, xstrdup(dp->d_name), val);
     }
     closedir(dirp);
   }
@@ -135,11 +136,11 @@ union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
    * Add wildcard entry
    */
   {
-    size_t l = strlen(*(dir-1)) + 5;
+    size_t l = strlen(*(dir-1)) + sizeof(fseq);
     char *val = xmalloc(l);
 
-    xsnprintf(val, l, "fs:=%s", *(dir-1));
-    (*fn) (m, strdup("*"), val);
+    xsnprintf(val, l, "%s%s", fseq, *(dir-1));
+    (*fn) (m, xstrdup("*"), val);
   }
   XFREE(mapd);
   XFREE(v);