]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Fix code to check for two resources of same name. It forgot
authorKern Sibbald <kern@sibbald.com>
Fri, 22 Dec 2006 15:40:16 +0000 (15:40 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 22 Dec 2006 15:40:16 +0000 (15:40 +0000)
     to check the last entry.  Fixes bug #734.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3843 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/console/console_conf.c
bacula/src/dird/dird_conf.c
bacula/src/filed/filed_conf.c
bacula/src/stored/stored_conf.c
bacula/technotes-1.39

index 125a2a7ec68209f2e034fda1da8905e79c331dec..a65dfb841dc21cfca82b8a8616f47a742d11997b 100644 (file)
@@ -310,15 +310,16 @@ void save_resource(int type, RES_ITEM *items, int pass)
       if (!res_head[rindex]) {
          res_head[rindex] = (RES *)res; /* store first entry */
       } else {
-         RES *next;
-         for (next=res_head[rindex]; next->next; next=next->next) {
+         RES *next, *last;
+         for (last=next=res_head[rindex]; next; next=next->next) {
+            last = next;
             if (strcmp(next->name, res->res_dir.hdr.name) == 0) {
                Emsg2(M_ERROR_TERM, 0,
                   _("Attempt to define second %s resource named \"%s\" is not permitted.\n"),
                   resources[rindex].name, res->res_dir.hdr.name);
             }
          }
-         next->next = (RES *)res;
+         last->next = (RES *)res;
          Dmsg2(90, "Inserting %s res: %s\n", res_to_str(type),
                res->res_dir.hdr.name);
       }
index 74db53766cb2eb5c89d44c0d85d6d77f4574ed95..b32c4122080c14b203945d1e665ed1c16fb8376d 100644 (file)
@@ -1375,7 +1375,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       error = true;
       break;
    default:
-      printf(_("Unknown resource type %d in save_resrouce.\n"), type);
+      printf(_("Unknown resource type %d in save_resource.\n"), type);
       error = true; 
       break;
    }
@@ -1388,20 +1388,21 @@ void save_resource(int type, RES_ITEM *items, int pass)
          Dmsg3(900, "Inserting first %s res: %s index=%d\n", res_to_str(type),
                res->res_dir.hdr.name, rindex);
       } else {
-         RES *next;
+         RES *next, *last;
          if (res->res_dir.hdr.name == NULL) {
             Emsg1(M_ERROR_TERM, 0, _("Name item is required in %s resource, but not found.\n"),
                   resources[rindex]);
          }   
          /* Add new res to end of chain */
-         for (next=res_head[rindex]; next->next; next=next->next) {
+         for (last=next=res_head[rindex]; next; next=next->next) {
+            last = next;
             if (strcmp(next->name, res->res_dir.hdr.name) == 0) {
                Emsg2(M_ERROR_TERM, 0,
                   _("Attempt to define second %s resource named \"%s\" is not permitted.\n"),
                   resources[rindex].name, res->res_dir.hdr.name);
             }
          }
-         next->next = (RES *)res;
+         last->next = (RES *)res;
          Dmsg4(900, _("Inserting %s res: %s index=%d pass=%d\n"), res_to_str(type),
                res->res_dir.hdr.name, rindex, pass);
       }
index 0bcb3129ce29f26118344b43b94076335374f32c..416f9ecc846e117996164330d7fb1f03edfd46f5 100644 (file)
@@ -423,16 +423,17 @@ void save_resource(int type, RES_ITEM *items, int pass)
       if (!res_head[rindex]) {
          res_head[rindex] = (RES *)res; /* store first entry */
       } else {
-         RES *next;
+         RES *next, *last;
          /* Add new res to end of chain */
-         for (next=res_head[rindex]; next->next; next=next->next) {
+         for (last=next=res_head[rindex]; next; next=next->next) {
+            last = next;
             if (strcmp(next->name, res->res_dir.hdr.name) == 0) {
                Emsg2(M_ERROR_TERM, 0,
                   _("Attempt to define second %s resource named \"%s\" is not permitted.\n"),
                   resources[rindex].name, res->res_dir.hdr.name);
             }
          }
-         next->next = (RES *)res;
+         last->next = (RES *)res;
          Dmsg2(90, "Inserting %s res: %s\n", res_to_str(type),
                res->res_dir.hdr.name);
       }
index 80dd8220929c42810f458934baabb5ff27616a51..ec5632a41a0e186d3fa363fa1ae0ea0b20c45992 100644 (file)
@@ -659,16 +659,17 @@ void save_resource(int type, RES_ITEM *items, int pass)
       if (!res_head[rindex]) {
          res_head[rindex] = (RES *)res; /* store first entry */
       } else {
-         RES *next;
+         RES *next, *last;
          /* Add new res to end of chain */
-         for (next=res_head[rindex]; next->next; next=next->next) {
+         for (last=next=res_head[rindex]; next; next=next->next) {
+            last = next;
             if (strcmp(next->name, res->res_dir.hdr.name) == 0) {
                Emsg2(M_ERROR_TERM, 0,
                   _("Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"),
                   resources[rindex].name, res->res_dir.hdr.name);
             }
          }
-         next->next = (RES *)res;
+         last->next = (RES *)res;
          Dmsg2(90, "Inserting %s res: %s\n", res_to_str(type),
                res->res_dir.hdr.name);
       }
index dfc635a9b7f5f3d0e5f4106a29fb25b0706b06ee..e247791827f6b98313e23d05d17a0f8ef1c1cc87 100644 (file)
@@ -2,6 +2,8 @@
 
 General:
 22Dec06
+kes  Fix code to check for two resources of same name. It forgot
+     to check the last entry.  Fixes bug #734.
 kes  Apply scanvolume patch from Richard Mortimer that fixes bug
      #738.
 kes  Apply Eric's patch for recycling the Scratch pool.