]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix possible seg fault if SQL error.
authorKern Sibbald <kern@sibbald.com>
Fri, 30 May 2008 10:36:49 +0000 (10:36 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 30 May 2008 10:36:49 +0000 (10:36 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/branches/Branch-2.2@7057 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/cats/sql.c
bacula/src/version.h
bacula/technotes-2.1

index 8a61c449d9a90062c3a7ca6b863823163d4295dd..99503f7c8bd9452e5f7316078a98b1d37d864f7a 100644 (file)
@@ -468,6 +468,9 @@ list_dashes(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx)
    send(ctx, "+");
    for (i = 0; i < sql_num_fields(mdb); i++) {
       field = sql_fetch_field(mdb);
+      if (!field) {
+         break;
+      }
       for (j = 0; j < (int)field->max_length + 2; j++) {
          send(ctx, "-");
       }
@@ -500,6 +503,9 @@ list_result(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_type t
    for (i = 0; i < sql_num_fields(mdb); i++) {
       Dmsg1(800, "list_result processing field %d\n", i);
       field = sql_fetch_field(mdb);
+      if (!field) {
+         break;
+      }
       col_len = cstrlen(field->name);
       if (type == VERT_LIST) {
          if (col_len > max_len) {
@@ -531,6 +537,9 @@ list_result(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_type t
    for (i = 0; i < sql_num_fields(mdb); i++) {
       Dmsg1(800, "list_result looking at field %d\n", i);
       field = sql_fetch_field(mdb);
+      if (!field) {
+         break;
+      }
       bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, field->name);
       send(ctx, buf);
    }
@@ -543,6 +552,9 @@ list_result(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_type t
       send(ctx, "|");
       for (i = 0; i < sql_num_fields(mdb); i++) {
          field = sql_fetch_field(mdb);
+         if (!field) {
+            break;
+         }
          if (row[i] == NULL) {
             bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, "NULL");
          } else if (IS_NUM(field->type) && !jcr->gui && is_an_integer(row[i])) {
@@ -565,6 +577,9 @@ vertical_list:
       sql_field_seek(mdb, 0);
       for (i = 0; i < sql_num_fields(mdb); i++) {
          field = sql_fetch_field(mdb);
+         if (!field) {
+            break;
+         }
          if (row[i] == NULL) {
             bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name, "NULL");
          } else if (IS_NUM(field->type) && !jcr->gui && is_an_integer(row[i])) {
index 4f97d027908333296c76af8786a057f5bcae97bc..5abb690381f017872c0ae7529f94feb649eb6d83 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.2.10-b4"
-#define BDATE   "28 May 2008"
-#define LSMDATE "28May08"
+#define BDATE   "30 May 2008"
+#define LSMDATE "30May08"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2008"       /* year for copyright messages in progs */
index 4ab0a6da64bb183ed5254d9c31e39dd9be3df74f..0b3895a883671a2711b5c3afe88ba0d7f424ff6b 100644 (file)
@@ -1,6 +1,8 @@
               Technical notes on version 2.2
 
 General:
+30May08
+kes  Fix possible seg fault if SQL error.
 28May08
 kes  Add debug code to SD.
 kes  Fix renaming a Volume, which used the wrong Volume name.