budb: Add printf format checks to logging fns
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Sat, 17 Jul 2010 17:06:39 +0000 (18:06 +0100)
committerDerrick Brashear <shadow@dementia.org>
Sun, 18 Jul 2010 15:15:15 +0000 (08:15 -0700)
Add format checking to the Log, LogError and LogDebug functions.

Fix the resulting type errors. One of these in particular is a
signficant bug, where we would try to print a hash table pointer
as a string.

Change-Id: I02d7bcd7ce63583d24dda4da40288af51a516583
Reviewed-on: http://gerrit.openafs.org/2445
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/budb/budb_internal.h
src/budb/database.c
src/budb/db_alloc.c
src/budb/db_hash.c
src/budb/db_text.c
src/budb/procs.c

index 450010f..ba3e941 100644 (file)
@@ -54,9 +54,12 @@ afs_int32 InitRPC(struct ubik_trans **, int lock, int this_op);
 
 /* server.c */
 
-void Log(char *fmt, ... );
-void LogError(long code, char *fmt, ... );
-void LogDebug(int level, char *fmt, ... );
+void Log(char *fmt, ... )
+    AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
+void LogError(long code, char *fmt, ... )
+    AFS_ATTRIBUTE_FORMAT(__printf__, 2, 3);
+void LogDebug(int level, char *fmt, ... )
+    AFS_ATTRIBUTE_FORMAT(__printf__, 2, 3);
 
 /* struct_ops.c */
 
index 15c668f..f28493f 100644 (file)
@@ -113,8 +113,8 @@ dbread(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len)
     }
     code = ubik_Read(ut, buff, len);
     if (code) {
-       LogError(code, "dbread: ubik_Read pos %d, buff %d, len %d\n", pos,
-                buff, len);
+       LogError(code, "dbread: ubik_Read pos %d, buff %"AFS_PTR_FMT
+                ", len %d\n", pos, buff, len);
        ERROR(code);
     }
 
@@ -148,8 +148,8 @@ cdbread(struct ubik_trans *ut, int type, afs_int32 pos, void *buff, afs_int32 le
     }
     code = ubik_Read(ut, buff, len);
     if (code) {
-       LogError(code, "cdbread: ubik_Read pos 0x%x, buff %d, len %d\n", pos,
-                buff, len);
+       LogError(code, "cdbread: ubik_Read pos 0x%x, buff %"AFS_PTR_FMT
+                ", len %d\n", pos, buff, len);
        ERROR(code);
     }
 
index 090df26..e8f83a5 100644 (file)
@@ -206,8 +206,8 @@ AllocStructure(struct ubik_trans *ut, char type, dbadr related, dbadr *saP, void
     *(afs_int32 *) s = 1;      /* make sure structure is not free */
     *saP = a + ((char *)bs - (char *)&b);
 
-    LogDebug(3, "allocated at %d, block at %d, offset %d\n", *saP, a,
-            ((char *)bs - (char *)&b));
+    LogDebug(3, "allocated at %d, block at %d, offset %ld\n", *saP, a,
+            (long int)((char *)bs - (char *)&b));
     /* caller must write back at least first word of structure */
     return 0;
 }
index 9a3b62a..99a1239 100644 (file)
@@ -942,7 +942,8 @@ ht_HashIn(struct ubik_trans *ut,
                      htonl(ea));
     if (code)
        return BUDB_IO;
-    LogDebug(5, "Hashin: set %d to %d\n", &block->b.bucket[bo], htonl(ea));
+    LogDebug(5, "Hashin: set %"AFS_PTR_FMT" to %d\n",
+            &block->b.bucket[bo], htonl(ea));
 
     code =
        set_word_addr(ut, 0, &db.h, &ht->entries,
index a134816..c4117f3 100644 (file)
@@ -78,8 +78,8 @@ GetText(struct rx_call *call, afs_uint32 lockHandle, afs_int32 textType,
     char *textPtr;
     afs_int32 code;
 
-    LogDebug(5, "GetText: type %d, offset %d, nextOffset %d, maxLength %d\n",
-            textType, offset, nextOffset, maxLength);
+    LogDebug(5, "GetText: type %d, offset %d, nextOffset %"AFS_PTR_FMT
+            ", maxLength %d\n", textType, offset, nextOffset, maxLength);
 
     if (callPermitted(call) == 0) {
        code = BUDB_NOTPERMITTED;
index 1ef235f..927a042 100644 (file)
@@ -757,7 +757,7 @@ GetVolInfo(struct ubik_trans *ut, struct budb_volumeEntry *volP, dbadr *viaP,
        if (eval)
            ERROR(eval);
 
-       LogDebug(4, "volume Info for %s placed at %d\n", db.volName, via);
+       LogDebug(4, "volume Info for %s placed at %d\n", volP->name, via);
     }
 
     else if (!VolInfoMatch(volP, viP)) {       /* Not the head volinfo struct */