X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Ftools%2Fdumpscan%2Fdumptool.c;h=70b2ec708f346e01367b8c8d42c63c8fc01474ae;hp=6f6e44fef391dbb76cb951fe2fda511bb36b1c44;hb=51d31209dc9a3082461cc9430da0975fdf28b085;hpb=89d85da6044a82eee34ef5c424921dad12b2ae7a diff --git a/src/tools/dumpscan/dumptool.c b/src/tools/dumpscan/dumptool.c index 6f6e44f..70b2ec7 100644 --- a/src/tools/dumpscan/dumptool.c +++ b/src/tools/dumpscan/dumptool.c @@ -918,7 +918,7 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan) offset = 0; length = 0; - vnode->type = -1; + vnode->type = vNull; vnode->length = -1; if (ReadInt32(f, (uint32_t *) & vnodeNumber)) { @@ -1064,7 +1064,7 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan) * just skip it (because we can't do anything with it. */ - if (vnode->type == -1) + if (vnode->type == vNull) continue; #ifdef RESIDENCY @@ -1149,12 +1149,19 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan) numSmallVnodes = numFileVnodes; } else { - LargeVnodeIndex = (struct vnodeData **) - malloc(numDirVnodes * sizeof(struct vnodeData)); - SmallVnodeIndex = (struct vnodeData **) - malloc(numFileVnodes * sizeof(struct vnodeData)); + if (numDirVnodes == 0) + LargeVnodeIndex = NULL; + else + LargeVnodeIndex = malloc(numDirVnodes + * sizeof(struct vnodeData *)); + if (numFileVnodes == 0) + SmallVnodeIndex = NULL; + else + SmallVnodeIndex = malloc(numFileVnodes + * sizeof(struct vnodeData *)); - if (LargeVnodeIndex == NULL || SmallVnodeIndex == NULL) { + if ((numDirVnodes != 0 && LargeVnodeIndex == NULL) || + (numFileVnodes != 0 && SmallVnodeIndex == NULL)) { if (verbose) fprintf(stderr, "Unable to allocate space " "for vnode tables\n"); @@ -1217,7 +1224,8 @@ InteractiveRestore(FILE * f, VolumeDiskData * vol) printf("> "); while (fgets(cmdbuf, CMDBUFSIZE, stdin)) { - cmdbuf[strlen(cmdbuf) - 1] = '\0'; + if (strlen(cmdbuf) > 0 && cmdbuf[strlen(cmdbuf) - 1] == '\n') + cmdbuf[strlen(cmdbuf) - 1] = '\0'; if (strlen(cmdbuf) == 0) { printf("> ");