]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix segfault in mysql.c with no password
authorKern Sibbald <kern@sibbald.com>
Wed, 20 Aug 2003 16:28:38 +0000 (16:28 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 20 Aug 2003 16:28:38 +0000 (16:28 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@671 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/kernstodo
bacula/src/cats/mysql.c
bacula/src/dird/dird.c
bacula/src/dird/job.c
bacula/src/dird/ua_cmds.c
bacula/src/lib/util.c

index f527d2a1498171037c5cd36e501cda0bf4f13cde..8741962f97abdee12f1686211c8c451d364c8836 100644 (file)
@@ -27,6 +27,11 @@ Testing to do: (painful)
 - Figure out how to use ssh or stunnel to protect Bacula communications.
 
 For 1.32:
+- Enhance autochanger interface to include a "scan" feature
+  scan 1; scan 1-5; scan 1,2,4 ...  to update the catalog 
+  when the magazine is changed.
+- Make things like list where a file is saved case independent for
+  Windows.
 - Edit the Client/Storage name into authentication failure messages.
 - Implement job in VerifyToCatalog
 - Implement migrate
index 7f8891acf1e7ea1a747d8b2c975d886be0fecd3c..98ec7d88e7396d8821b0f210e36d703bd18b8c6b 100644 (file)
@@ -61,6 +61,10 @@ db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password,
 {
    B_DB *mdb;
 
+   if (!db_user) {             
+      Jmsg(jcr, M_FATAL, 0, _("A user name for MySQL must be supplied.\n"));
+      return NULL;
+   }
    P(mutex);                         /* lock DB queue */
    /* Look to see if DB already open */
    for (mdb=NULL; (mdb=(B_DB *)qnext(&db_list, &mdb->bq)); ) {
@@ -76,7 +80,9 @@ db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password,
    memset(mdb, 0, sizeof(B_DB));
    mdb->db_name = bstrdup(db_name);
    mdb->db_user = bstrdup(db_user);
-   mdb->db_password = bstrdup(db_password);
+   if (db_password) {
+      mdb->db_password = bstrdup(db_password);
+   }
    if (db_address) {
       mdb->db_address = bstrdup(db_address);
    }
index f6f0213c71e661840c1878e3dae49dde855e2499..665f7fb86a045e2dee591f254f882811d002f54d 100644 (file)
@@ -102,56 +102,56 @@ int main (int argc, char *argv[])
    while ((ch = getopt(argc, argv, "c:d:fg:r:stu:v?")) != -1) {
       switch (ch) {
          case 'c':                    /* specify config file */
-           if (configfile != NULL) {
-              free(configfile);
-           }
-           configfile = bstrdup(optarg);
-           break;
+        if (configfile != NULL) {
+           free(configfile);
+        }
+        configfile = bstrdup(optarg);
+        break;
 
-         case 'd':                    /* set debug level */
-           debug_level = atoi(optarg);
-           if (debug_level <= 0) {
-              debug_level = 1; 
-           }
-            Dmsg1(0, "Debug level = %d\n", debug_level);
-           break;
+      case 'd':                    /* set debug level */
+        debug_level = atoi(optarg);
+        if (debug_level <= 0) {
+           debug_level = 1; 
+        }
+         Dmsg1(0, "Debug level = %d\n", debug_level);
+        break;
 
-         case 'f':                    /* run in foreground */
-           background = FALSE;
-           break;
+      case 'f':                    /* run in foreground */
+        background = FALSE;
+        break;
 
-         case 'g':                    /* set group id */
-           gid = optarg;
-           break;
+      case 'g':                    /* set group id */
+        gid = optarg;
+        break;
 
-         case 'r':                    /* run job */
-           if (runjob != NULL) {
-              free(runjob);
-           }
-           if (optarg) {
-              runjob = bstrdup(optarg);
-           }
-           break;
+      case 'r':                    /* run job */
+        if (runjob != NULL) {
+           free(runjob);
+        }
+        if (optarg) {
+           runjob = bstrdup(optarg);
+        }
+        break;
 
-         case 's':                    /* turn off signals */
-           no_signals = TRUE;
-           break;
+      case 's':                    /* turn off signals */
+        no_signals = TRUE;
+        break;
 
-         case 't':                    /* test config */
-           test_config = TRUE;
-           break;
+      case 't':                    /* test config */
+        test_config = TRUE;
+        break;
 
-         case 'u':                    /* set uid */
-           uid = optarg;
-           break;
+      case 'u':                    /* set uid */
+        uid = optarg;
+        break;
 
-         case 'v':                    /* verbose */
-           verbose++;
-           break;
+      case 'v':                    /* verbose */
+        verbose++;
+        break;
 
-         case '?':
-        default:
-           usage();
+      case '?':
+      default:
+        usage();
 
       }  
    }
@@ -367,9 +367,12 @@ Without that I don't know who I am :-(\n"), configfile);
         db = db_init_database(NULL, catalog->db_name, catalog->db_user,
                            catalog->db_password, catalog->db_address,
                            catalog->db_port, catalog->db_socket);
-        if (!db_open_database(NULL, db)) {
-            Jmsg(NULL, M_FATAL, 0, _("Could not open %s database \"%s\".\n"),
-                catalog_db, catalog->db_name);
+        if (!db || !db_open_database(NULL, db)) {
+            Jmsg(NULL, M_FATAL, 0, _("Could not open database \"%s\".\n"),
+                catalog->db_name);
+           if (db) {
+               Jmsg(NULL, M_FATAL, 0, _("%s"), db_strerror(db));
+           }
            OK = FALSE;
         } else {
            /* If a pool is defined for this job, create the pool DB       
index 047b6e111739280b25cd80273f8c7bc1a8b0929c..3987beee4d4a3cee86e3fbc72b35e88c40cb9c8a 100644 (file)
@@ -122,8 +122,12 @@ void run_job(JCR *jcr)
    jcr->db=db_init_database(jcr, jcr->catalog->db_name, jcr->catalog->db_user,
                            jcr->catalog->db_password, jcr->catalog->db_address,
                            jcr->catalog->db_port, jcr->catalog->db_socket);
-   if (!db_open_database(jcr, jcr->db)) {
-      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+   if (!jcr->db || !db_open_database(jcr, jcr->db)) {
+      Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"),
+                jcr->catalog->db_name);
+      if (jcr->db) {
+         Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+      }
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       free_jcr(jcr);
       return;
index 30788df097f7e9663da3f08eb0139621abb42cef..3d10c87c290f769ae911f996f475f91d735c2839 100644 (file)
@@ -1657,9 +1657,12 @@ int open_db(UAContext *ua)
    ua->db = db_init_database(ua->jcr, ua->catalog->db_name, ua->catalog->db_user,
                             ua->catalog->db_password, ua->catalog->db_address,
                             ua->catalog->db_port, ua->catalog->db_socket);
-   if (!db_open_database(ua->jcr, ua->db)) {
-      bsendmsg(ua, _("Could not open DB %s: ERR=%s"), 
-        ua->catalog->db_name, db_strerror(ua->db));
+   if (!ua->db || !db_open_database(ua->jcr, ua->db)) {
+      bsendmsg(ua, _("Could not open database \"%s\".\n"),
+                ua->catalog->db_name);
+      if (ua->db) {
+         bsendmsg(ua, "%s", db_strerror(ua->db));
+      }
       close_db(ua);
       return 0;
    }
index 59bb7ad69c8492e8131913c850b3f78aeef1f642..9c1ce536c37deb4b07bb1ecaa14686ac2ad32f10 100644 (file)
@@ -112,7 +112,7 @@ char *encode_time(time_t time, char *buf)
 /*
  * Concatenate a string (str) onto a pool memory buffer pm
  */
-in pm_strcat(POOLMEM **pm, char *str)
+int pm_strcat(POOLMEM **pm, char *str)
 {
    int pmlen = strlen(*pm);
    int len = strlen(str) + 1;