]> git.sur5r.net Git - bacula/bacula/commitdiff
String length protection, VolUseDuration,MaxVolJobs see kes18Nov02
authorKern Sibbald <kern@sibbald.com>
Mon, 18 Nov 2002 17:54:02 +0000 (17:54 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 18 Nov 2002 17:54:02 +0000 (17:54 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@200 91ce42f0-d328-0410-95d8-f526ca767f89

13 files changed:
bacula/scripts/Makefile.in
bacula/src/cats/protos.h
bacula/src/cats/sql_create.c
bacula/src/cats/sql_find.c
bacula/src/cats/sql_get.c
bacula/src/dird/backup.c
bacula/src/dird/catreq.c
bacula/src/dird/dird.c
bacula/src/dird/getmsg.c
bacula/src/dird/protos.h
bacula/src/jcr.h
bacula/src/lib/jcr.c
bacula/src/lib/protos.h

index 99d3ef86280a70359550831a522325377650f09e..4aee059888cbf9e473a610d98a003105a0610913 100755 (executable)
@@ -62,11 +62,10 @@ Makefiles:
 
 clean:
        @$(RMF) *~ 1 2 3
-       @$(RMF) startmysql stopmysql bacula fd startit stopit btraceback
-       @$(RMF) console gconsole
-
 
 # clean for distribution
 distclean: clean
+       @$(RMF) startmysql stopmysql bacula fd startit stopit btraceback
+       @$(RMF) console gconsole
 
 # ------------------------------------------------------------------------
index ab1fb39c187a9883a6ba0aff52e2960714a14e7b..e841c229acb459c610128e100045f17e857f64a8 100644 (file)
@@ -58,7 +58,7 @@ int db_delete_pool_record(B_DB *db, POOL_DBR *pool_dbr);
 int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr);
 
 /* find.c */
-int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, char *stime);
+int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime);
 int db_find_last_jobid(B_DB *mdb, JOB_DBR *jr);
 int db_find_next_volume(B_DB *mdb, int index, MEDIA_DBR *mr);
 
@@ -90,7 +90,7 @@ int  db_update_job_start_record(B_DB *db, JOB_DBR *jr);
 int  db_update_job_end_record(B_DB *db, JOB_DBR *jr);
 int  db_update_pool_record(B_DB *db, POOL_DBR *pr);
 int  db_update_media_record(B_DB *db, MEDIA_DBR *mr);
-int  db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5);  
+int  db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5); 
 int  db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId);
 
 #endif /* __SQL_PROTOS_H */
index f79e7158af4e6bfa60c18d5ac4f29bc72f1eb6a3..82239182a484fa938240b20984f8152955851649 100644 (file)
@@ -164,9 +164,10 @@ db_create_pool_record(B_DB *mdb, POOL_DBR *pr)
    int stat;
    char ed1[30], ed2[30];
 
+   Dmsg0(200, "In create pool\n");
    db_lock(mdb);
    Mmsg(&mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name);
-   Dmsg1(20, "selectpool: %s\n", mdb->cmd);
+   Dmsg1(200, "selectpool: %s\n", mdb->cmd);
 
    if (QUERY_DB(mdb, mdb->cmd)) {
 
@@ -196,7 +197,7 @@ VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,'%s','%s')",
                  edit_uint64(pr->VolUseDuration, ed2),
                  pr->MaxVolJobs,
                  pr->PoolType, pr->LabelFormat);
-   Dmsg1(500, "Create Pool: %s\n", mdb->cmd);
+   Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
    if (!INSERT_DB(mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"), 
            mdb->cmd, sql_strerror(mdb));
index e62d6d909d0a4273e9abd01678d1029bfc123229..0512f8d5c3f3857555e1fa4b9cab66dd6a3f66b1 100644 (file)
@@ -61,12 +61,12 @@ extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
  *         1 on success, jr is unchanged, but stime is set
  */
 int
-db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, char *stime)
+db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime)
 {
    SQL_ROW row;
    int JobId;
 
-   strcpy(stime, "0000-00-00 00:00:00");   /* default */
+   pm_strcpy(stime, "0000-00-00 00:00:00");   /* default */
    db_lock(mdb);
    /* If no Id given, we must find corresponding job */
    if (jr->JobId == 0) {
@@ -117,14 +117,14 @@ ORDER by StartTime DESC LIMIT 1",
    }
 
    if ((row = sql_fetch_row(mdb)) == NULL) {
-      *stime = 0;                    /* set EOS */
+      pm_strcpy(stime, "");                   /* set EOS */
       Mmsg2(&mdb->errmsg, _("No Job found for JobId=%d: %s\n"), JobId, sql_strerror(mdb));
       sql_free_result(mdb);
       db_unlock(mdb);
       return 0;
    }
    Dmsg1(100, "Got start time: %s\n", row[0]);
-   strcpy(stime, row[0]);
+   pm_strcpy(stime, row[0]);
 
    sql_free_result(mdb);
 
@@ -204,7 +204,8 @@ db_find_next_volume(B_DB *mdb, int item, MEDIA_DBR *mr)
 
    db_lock(mdb);
    Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,\
-VolBytes,VolMounts,VolErrors,VolWrites,VolMaxBytes,VolCapacityBytes,Slot,\
+VolBytes,VolMounts,VolErrors,VolWrites,VolMaxBytes,VolCapacityBytes,\
+VolRetention,VolUseDuration,MaxVolJobs,Recycle,Slot,\
 FirstWritten FROM Media WHERE PoolId=%d AND MediaType='%s' AND VolStatus='%s' \
 ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus); 
 
@@ -235,7 +236,7 @@ ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus);
 
    /* Return fields in Media Record */
    mr->MediaId = atoi(row[0]);
-   strcpy(mr->VolumeName, row[1]);
+   bstrncpy(mr->VolumeName, row[1], sizeof(mr->VolumeName));
    mr->VolJobs = atoi(row[2]);
    mr->VolFiles = atoi(row[3]);
    mr->VolBlocks = atoi(row[4]);
@@ -245,8 +246,12 @@ ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus);
    mr->VolWrites = atoi(row[8]);
    mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
    mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
-   mr->Slot = atoi(row[11]);
-   strcpy(mr->cFirstWritten, row[12]);
+   mr->VolRetention = (utime_t)strtod(row[11], NULL);
+   mr->VolUseDuration = (utime_t)strtod(row[12], NULL);
+   mr->MaxVolJobs = atoi(row[13]);
+   mr->Recycle = atoi(row[14]);
+   mr->Slot = atoi(row[15]);
+   bstrncpy(mr->cFirstWritten, row[16]!=NULL?row[16]:"", sizeof(mr->cFirstWritten));
 
    sql_free_result(mdb);
 
index 3f7bd2e9dde8cdded9e3a2169c155804ae8032f4..787c3503d5bec1bf2223812fb500ba0fb9dccbe8 100644 (file)
@@ -345,12 +345,12 @@ FROM Job WHERE JobId=%u", jr->JobId);
    jr->VolSessionId = atol(row[0]);
    jr->VolSessionTime = atol(row[1]);
    jr->PoolId = atoi(row[2]);
-   strcpy(jr->cStartTime, row[3]);
-   strcpy(jr->cEndTime, row[4]);
+   bstrncpy(jr->cStartTime, row[3]!=NULL?row[3]:"", sizeof(jr->cStartTime));
+   bstrncpy(jr->cEndTime, row[4]!=NULL?row[4]:"", sizeof(jr->cEndTime));
    jr->JobFiles = atol(row[5]);
    jr->JobBytes = (uint64_t)strtod(row[6], NULL);
    jr->JobTDate = (utime_t)strtod(row[7], NULL);
-   strcpy(jr->Job, row[8]);
+   bstrncpy(jr->Job, row[8]!=NULL?row[8]:"", sizeof(jr->Job));
    jr->JobStatus = (int)*row[9];
    jr->Type = (int)*row[10];
    jr->Level = (int)*row[11];
@@ -481,9 +481,9 @@ int db_get_pool_record(B_DB *mdb, POOL_DBR *pdbr)
    db_lock(mdb);
    if (pdbr->PoolId != 0) {              /* find by id */
       Mmsg(&mdb->cmd, 
-"SELECT PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog, AcceptAnyVolume, \
-AutoPrune, Recycle, VolRetention, \
-PoolType, LabelFormat FROM Pool WHERE Pool.PoolId=%d", pdbr->PoolId);
+"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,\
+AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,\
+PoolType,LabelFormat FROM Pool WHERE Pool.PoolId=%d", pdbr->PoolId);
    } else {                          /* find by name */
       Mmsg(&mdb->cmd, 
 "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,\
@@ -504,7 +504,7 @@ PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
             Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
         } else {
            pdbr->PoolId = atoi(row[0]);
-           strcpy(pdbr->Name, row[1]);
+            bstrncpy(pdbr->Name, row[1]!=NULL?row[1]:"", sizeof(pdbr->Name));
            pdbr->NumVols = atoi(row[2]);
            pdbr->MaxVols = atoi(row[3]);
            pdbr->UseOnce = atoi(row[4]);
@@ -515,12 +515,8 @@ PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
            pdbr->VolRetention = (utime_t)strtod(row[9], NULL);
            pdbr->VolUseDuration = (utime_t)strtod(row[10], NULL);
            pdbr->MaxVolJobs = atoi(row[11]);
-           strcpy(pdbr->PoolType, row[12]);
-           if (row[13]) {
-              strcpy(pdbr->LabelFormat, row[13]);
-           } else {
-              pdbr->LabelFormat[0] = 0;
-           }
+            bstrncpy(pdbr->PoolType, row[12]!=NULL?row[12]:"", sizeof(pdbr->PoolType));
+            bstrncpy(pdbr->LabelFormat, row[13]!=NULL?row[13]:"", sizeof(pdbr->LabelFormat));
            stat = pdbr->PoolId;
         }
       }
@@ -565,8 +561,8 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
          Mmsg1(&mdb->errmsg, _("Error: FileSet record \"%s\" not found\n"), fsr->FileSet);
       } else {
         fsr->FileSetId = atoi(row[0]);
-        strcpy(fsr->FileSet, row[1]);
-        strcpy(fsr->MD5, row[2]);
+         bstrncpy(fsr->FileSet, row[1]!=NULL?row[1]:"", sizeof(fsr->FileSet));
+         bstrncpy(fsr->MD5, row[2]!=NULL?row[2]:"", sizeof(fsr->MD5));
         stat = fsr->FileSetId;
       }
       sql_free_result(mdb);
@@ -677,7 +673,7 @@ FROM Media WHERE VolumeName='%s'", mr->VolumeName);
         } else {
            /* return values */
            mr->MediaId = atoi(row[0]);
-           strcpy(mr->VolumeName, row[1]);
+            bstrncpy(mr->VolumeName, row[1]!=NULL?row[1]:"", sizeof(mr->VolumeName));
            mr->VolJobs = atoi(row[2]);
            mr->VolFiles = atoi(row[3]);
            mr->VolBlocks = atoi(row[4]);
@@ -687,15 +683,15 @@ FROM Media WHERE VolumeName='%s'", mr->VolumeName);
            mr->VolWrites = atoi(row[8]);
            mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
            mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
-           strcpy(mr->MediaType, row[11]);
-           strcpy(mr->VolStatus, row[12]);
+            bstrncpy(mr->MediaType, row[11]!=NULL?row[11]:"", sizeof(mr->MediaType));
+            bstrncpy(mr->VolStatus, row[12]!=NULL?row[12]:"", sizeof(mr->VolStatus));
            mr->PoolId = atoi(row[13]);
            mr->VolRetention = (utime_t)strtod(row[14], NULL);
            mr->VolUseDuration = (utime_t)strtod(row[15], NULL);
            mr->MaxVolJobs = atoi(row[16]);
            mr->Recycle = atoi(row[17]);
            mr->Slot = atoi(row[18]);
-           strcpy(mr->cFirstWritten, row[19]);
+            bstrncpy(mr->cFirstWritten, row[19]!=NULL?row[19]:"", sizeof(mr->cFirstWritten));
            stat = mr->MediaId;
         }
       } else {
index ae5ab403f86759b043fd8fc4fea84043e5adc66c..193cdbbfa5faaa1f415202562e23d5de7065416f 100644 (file)
@@ -117,12 +117,12 @@ int do_backup(JCR *jcr)
       case L_INCREMENTAL:
         /* Look up start time of last job */
         jcr->jr.JobId = 0;
-        if (!db_find_job_start_time(jcr->db, &jcr->jr, jcr->stime)) {
+        if (!db_find_job_start_time(jcr->db, &jcr->jr, &jcr->stime)) {
             Jmsg(jcr, M_INFO, 0, _("Last FULL backup time not found. Doing FULL backup.\n"));
            jcr->JobLevel = jcr->jr.Level = L_FULL;
         } else {
             strcpy(since, ", since=");
-           strcat(since, jcr->stime);
+           bstrncat(since, jcr->stime, sizeof(since));
         }
          Dmsg1(115, "Last start time = %s\n", jcr->stime);
         break;
index f2b4ca28de360db8ac64d7181788583afdd3d998..467eea555fa3a02f966c73c128bcc63f3422f1f2 100644 (file)
@@ -70,7 +70,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
    JOBMEDIA_DBR jm;
    char Job[MAX_NAME_LENGTH];
    int index, ok, relabel, writing, retry = 0;
-   char *omsg;
+   POOLMEM *omsg;
 
    memset(&mr, 0, sizeof(mr));
    memset(&jm, 0, sizeof(jm));
@@ -82,14 +82,15 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
    if (sscanf(bs->msg, Find_media, &Job, &index) == 2) {
       mr.PoolId = jcr->PoolId;
       strcpy(mr.MediaType, jcr->store->media_type);
-      Dmsg3(120, "CatReq FindMedia: Id=%d, MediaType=%s, Status=%s\n",
-        mr.PoolId, mr.MediaType, mr.VolStatus);
+      Dmsg2(120, "CatReq FindMedia: Id=%d, MediaType=%s\n",
+        mr.PoolId, mr.MediaType);
       /*
        * Find the Next Volume for Append
        */
 next_volume:
       strcpy(mr.VolStatus, "Append");  /* want only appendable volumes */
       ok = db_find_next_volume(jcr->db, index, &mr);  
+      Dmsg1(200, "catreq after find_next_vol ok=%d\n", ok);
       if (!ok) {
         /* Well, try finding recycled tapes */
         ok = find_recycled_volume(jcr, &mr);
@@ -133,7 +134,7 @@ next_volume:
        */
       if (ok) {
         jcr->MediaId = mr.MediaId;
-        strcpy(jcr->VolumeName, mr.VolumeName);
+        pm_strcpy(&jcr->VolumeName, mr.VolumeName);
         bash_spaces(mr.VolumeName);
         bnet_fsend(bs, OK_media, mr.VolumeName, mr.VolJobs,
            mr.VolFiles, mr.VolBlocks, mr.VolBytes, mr.VolMounts, mr.VolErrors,
@@ -280,12 +281,13 @@ MediaType=%s\n", mr.PoolId, jcr->PoolId, mr.VolStatus, mr.Slot, mr.MediaType);
       }
 
    } else {
-      omsg = (char *) get_memory(bs->msglen+1);
-      strcpy(omsg, bs->msg);
+      omsg = get_memory(bs->msglen+1);
+      pm_strcpy(&omsg, bs->msg);
       bnet_fsend(bs, "1990 Invalid Catalog Request: %s", omsg);    
       free_memory(omsg);
    }
    Dmsg1(120, ">CatReq response: %s", bs->msg);
+   Dmsg1(200, "Leave catreq jcr 0x%x\n", jcr);
    return;
 }
 
index 7401a340c6ea00e772372d2d2d49923074438c1b..20824a2a63de9f2fddcab9e47ba34f802e33e87a 100644 (file)
@@ -364,6 +364,7 @@ Without that I don't know who I am :-(\n"), configfile);
            }
            db_close_database(db);
         }
+
       } else {
         if (job->client) {
             Jmsg(NULL, M_FATAL, 0, _("No Catalog resource defined for client %s\n"), 
index e6ec9b4153c9335faeac5eb55de7ebff70fc6865..68b6a4a3dffa302cb19ff78af50c01c95338c1bc 100644 (file)
@@ -128,6 +128,7 @@ int32_t bget_msg(BSOCK *bs, int rtn)
          Emsg1(M_ERROR, 0, _("Job not found: %s\n"), bs->msg);
         continue;
       }
+      Dmsg1(200, "Getmsg got jcr 0x%x\n", jcr);
 
       /* Skip past "Jmsg Job=nnn" */
       if (!(msg=find_msg_start(bs->msg))) {
@@ -165,13 +166,16 @@ int32_t bget_msg(BSOCK *bs, int rtn)
        *   CatReq Job=nn Catalog-Request-Message
        */
       if (bs->msg[0] == 'C') {        /* Catalog request */
-         Dmsg1(120, "Catalog req: %s", bs->msg);
+         Dmsg2(120, "Catalog req jcr 0x%x: %s", jcr, bs->msg);
         catalog_request(jcr, bs, msg);
+         Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
         free_jcr(jcr);
         continue;
       }
       if (bs->msg[0] == 'U') {        /* Catalog update */
+         Dmsg2(120, "Catalog upd jcr 0x%x: %s", jcr, bs->msg);
         catalog_update(jcr, bs, msg);
+         Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
         free_jcr(jcr);
         continue;
       }
index b620ad088b6550f62bc0d9774dea80f0ba4e899b..3621473616639c0db7f73104e45ebbe3e40d2450 100644 (file)
@@ -46,16 +46,15 @@ extern char *level_to_str(int level);
 
 /* fd_cmds.c */
 extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
-                                 int max_retry_time, int verbose);
+                                  int max_retry_time, int verbose);
 extern int send_include_list(JCR *jcr);
 extern int send_exclude_list(JCR *jcr);
 extern int get_attributes_and_put_in_catalog(JCR *jcr);
 extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId);
 extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname, 
-                         char *link, char *attr, int stream);
+                          char *link, char *attr, int stream);
 
 /* job.c */
-extern void free_jcr(JCR *jcr);
 extern void set_jcr_defaults(JCR *jcr, JOB *job);
 extern void create_unique_job_name(JCR *jcr, char *base_name);
 extern void update_job_end_record(JCR *jcr);
@@ -66,7 +65,7 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf);
 
 /* msgchan.c */
 extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,    
-                             int max_retry_time, int verbose);
+                              int max_retry_time, int verbose);
 extern int start_storage_daemon_job(JCR *jcr);
 extern int start_storage_daemon_message_thread(JCR *jcr);
 extern int32_t bget_msg(BSOCK *bs, int type);
index 368b39319ad7c1a9dbe694934d5881c311b2a37a..01fb04b712079e45d0eb361b141643c44c7d163b 100644 (file)
@@ -242,7 +242,6 @@ typedef struct s_jcr JCR;
 
 /* The following routines are found in lib/jcr.c */
 extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr);
-extern void free_jcr(JCR *jcr);
 extern void free_locked_jcr(JCR *jcr);
 extern JCR *get_jcr_by_id(uint32_t JobId);
 extern JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime);
@@ -252,4 +251,11 @@ extern JCR *get_next_jcr(JCR *jcr);
 extern void lock_jcr_chain();
 extern void unlock_jcr_chain();
 
+#ifdef DEBUG
+extern void b_free_jcr(char *file, int line, JCR *jcr);
+#define free_jcr(jcr) b_free_jcr(__FILE__, __LINE__, (jcr))
+#else
+extern void free_jcr(JCR *jcr);
+#endif
+
 #endif /* __JCR_H_ */
index 92b529fbda259f223e01c5f817d2de7a6ef3662a..1ee2787d2290082dc0614a32318788a76187f1c8 100755 (executable)
@@ -153,15 +153,25 @@ static void free_common_jcr(JCR *jcr)
 /* 
  * Global routine to free a jcr
  */
+#ifdef DEBUG
+void b_free_jcr(char *file, int line, JCR *jcr)
+{
+   Dmsg3(200, "Enter free_jcr 0x%x from %s:%d\n", jcr, file, line);
+
+#else
+
 void free_jcr(JCR *jcr)
 {
-   Dmsg0(200, "Enter free_jcr\n");
+   Dmsg1(200, "Enter free_jcr 0x%x\n", jcr);
+
+#endif
+
    P(mutex);
    jcr->use_count--;                 /* decrement use count */
-   Dmsg1(200, "Decrement jcr use_count=%d\n", jcr->use_count);
+   Dmsg2(200, "Decrement jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
    if (jcr->use_count > 0) {         /* if in use */
       V(mutex);
-      Dmsg1(200, "jcr use_count=%d\n", jcr->use_count);
+      Dmsg2(200, "jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
       return;
    }
    remove_jcr(jcr);
@@ -180,7 +190,7 @@ void free_jcr(JCR *jcr)
 void free_locked_jcr(JCR *jcr)
 {
    jcr->use_count--;                 /* decrement use count */
-   Dmsg1(200, "Decrement jcr use_count=%d\n", jcr->use_count);
+   Dmsg2(200, "Decrement jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
    if (jcr->use_count > 0) {         /* if in use */
       return;
    }
@@ -205,7 +215,7 @@ JCR *get_jcr_by_id(uint32_t JobId)
    for (jcr = jobs; jcr; jcr=jcr->next) {
       if (jcr->JobId == JobId) {
         jcr->use_count++;
-         Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+         Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
         break;
       }
    }
@@ -227,7 +237,7 @@ JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime)
       if (jcr->VolSessionId == SessionId && 
          jcr->VolSessionTime == SessionTime) {
         jcr->use_count++;
-         Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+         Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
         break;
       }
    }
@@ -253,7 +263,7 @@ JCR *get_jcr_by_partial_name(char *Job)
    for (jcr = jobs; jcr; jcr=jcr->next) {
       if (strncmp(Job, jcr->Job, len) == 0) {
         jcr->use_count++;
-         Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+         Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
         break;
       }
    }
@@ -276,7 +286,7 @@ JCR *get_jcr_by_full_name(char *Job)
    for (jcr = jobs; jcr; jcr=jcr->next) {
       if (strcmp(jcr->Job, Job) == 0) {
         jcr->use_count++;
-         Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+         Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
         break;
       }
    }
index 5192a1941e5a840d64d5065c251841f496852744..2d19d305fcabfc44b439acd19fcbff109c574a3a 100644 (file)
@@ -30,8 +30,8 @@ int       from_base64            (intmax_t *value, char *where);
 int       bin_to_base64          (char *buf, char *bin, int len);
 
 /* bmisc.c */
-char     *bstrncpy               (char *dest, char *src, int maxlen);
-char     *bstrncat               (char *dest, char *src, int maxlen);
+char     *bstrncpy               (char *dest, const char *src, int maxlen);
+char     *bstrncat               (char *dest, const char *src, int maxlen);
 void     *b_malloc               (char *file, int line, size_t size);
 #ifndef DEBUG
 void     *bmalloc                (size_t size);