X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fbucoord%2Fdsstub.c;h=01b1c78e7c441290d27f53b3935bd6323e5a380e;hp=bd9447b27cb61cdbcce9b2b0a5c46b99f7689107;hb=fda2bc874751ca479365dc6389c0eebb41a0bda1;hpb=6f1979c83a4357c82be2e011b79d993b21e545f9 diff --git a/src/bucoord/dsstub.c b/src/bucoord/dsstub.c index bd9447b..01b1c78 100644 --- a/src/bucoord/dsstub.c +++ b/src/bucoord/dsstub.c @@ -62,13 +62,11 @@ afs_int32 ScanVolClone(FILE *, char *, afs_int32 *); static char * TapeName(char *atapeName) { - static char tbuffer[AFSDIR_PATH_MAX]; + char *tbuffer; - /* construct the backup dir path */ - strcpy(tbuffer, AFSDIR_SERVER_BACKUP_DIRPATH); - strcat(tbuffer, "/T"); - strcat(tbuffer + 1, atapeName); - strcat(tbuffer, ".db"); + if (asprintf(&tbuffer, "%s/T%s.db", AFSDIR_SERVER_BACKUP_DIRPATH, + atapeName) < 0) + return NULL; return tbuffer; } @@ -76,13 +74,11 @@ static char * TapeName(char *atapeName) static char * DumpName(afs_int32 adumpID) { - static char tbuffer[AFSDIR_PATH_MAX]; - char buf[AFSDIR_PATH_MAX]; + char *tbuffer; - /* construct the backup dir path */ - strcpy(buf, AFSDIR_SERVER_BACKUP_DIRPATH); - strcat(buf, "/D%d.db"); - sprintf(tbuffer, buf, adumpID); + if (asprintf(&tbuffer, "%s/D%d.db", AFSDIR_SERVER_BACKUP_DIRPATH, + adumpID) < 0) + return NULL; return tbuffer; } @@ -92,7 +88,10 @@ static FILE * OpenDump(afs_int32 adumpID, char * awrite) FILE *tfile; tp = DumpName(adumpID); + if (tp == NULL) + return NULL; tfile = fopen(tp, awrite); + free(tp); return tfile; } @@ -105,8 +104,12 @@ FILE * OpenTape(char * atapeName, char * awrite) { char *tp; FILE *tfile; + tp = TapeName(atapeName); + if (tp == NULL) + return NULL; tfile = fopen(tp, awrite); + free(tp); return tfile; } @@ -159,8 +162,12 @@ static afs_int32 DeleteDump(afs_int32 adumpID) { char *tp; afs_int32 code; + tp = DumpName(adumpID); + if (tp == NULL) + return ENOMEM; code = unlink(tp); + free(tp); if (code) return code; code = ScanForChildren(adumpID); @@ -172,8 +179,12 @@ static afs_int32 DeleteTape(char * atapeName) { char *tp; afs_int32 code; + tp = TapeName(atapeName); + if (tp == NULL) + return ENOMEM; code = unlink(tp); + free(tp); return code; } #endif