]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix seg fault in SQlite driver
authorKern Sibbald <kern@sibbald.com>
Sat, 30 Jan 2010 07:48:11 +0000 (08:48 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Mon, 2 Aug 2010 14:49:24 +0000 (16:49 +0200)
bacula/src/cats/sqlite.c
bacula/src/lib/bsys.c

index 1672f07502dbcebcd6c68d24cf97739d5b691bfc..93d4196ae3fa498877bf3cddf2a37af968122fe0 100644 (file)
@@ -448,6 +448,13 @@ void my_sqlite_field_seek(B_DB *mdb, int field)
       mdb->fields = (SQL_FIELD **)malloc(sizeof(SQL_FIELD) * mdb->ncolumn);
       for (i=0; i < sql_num_fields(mdb); i++) {
          mdb->fields[i] = (SQL_FIELD *)malloc(sizeof(SQL_FIELD));
+         if (mdb->result[i] == NULL) {
+            mdb->fields_defined = false;
+            free(mdb->fields);
+            mdb->fields = NULL;
+            mdb->field = 0;
+            return;
+         }
          mdb->fields[i]->name = mdb->result[i];
          mdb->fields[i]->length = cstrlen(mdb->fields[i]->name);
          mdb->fields[i]->max_length = mdb->fields[i]->length;
index fe86199db3353d50c0c6bca831316ee8bc1d7eb0..f5d7bc6a7a648d59340cd93ed443b66cf7dba99b 100644 (file)
@@ -160,6 +160,9 @@ int cstrlen(const char *str)
 {
    uint8_t *p = (uint8_t *)str;
    int len = 0;
+   if (str == NULL) {
+      return 0;
+   }
    while (*p) {
       if ((*p & 0xC0) != 0xC0) {
          p++;