From d4302ea35a14a4feeb04bdae168176a9cdd378b5 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Fri, 7 Feb 2003 22:16:46 +0000 Subject: [PATCH] vos-handle-invalid-long-names-20030207 FIXES 1289 Avoid crashing when an unreasonably long volume name is passed to vos. --- src/volser/vsutils.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/volser/vsutils.c b/src/volser/vsutils.c index 765d63798..20b91c429 100644 --- a/src/volser/vsutils.c +++ b/src/volser/vsutils.c @@ -539,18 +539,19 @@ afs_int32 vsu_ClientInit(noAuthFlag, confDir, cellName, sauth, uclientp, secproc */ vsu_ExtractName(rname,name) char rname[],name[]; -{ char sname[32]; +{ char sname[VOLSER_OLDMAXVOLNAME+1]; int total; - strcpy(sname,name); + strncpy(sname, name, sizeof(sname)); + sname[sizeof(sname)-1] = '\0'; total = strlen(sname); if(!strcmp(&sname[total - 9],".readonly")) { /*discard the last 8 chars */ sname[total - 9] = '\0'; - strcpy(rname,sname); + strcpy(rname, sname); return 0; } - else if(!strcmp(&sname[total - 7 ],".backup")) { + else if(!strcmp(&sname[total - 7],".backup")) { /*discard last 6 chars */ sname[total - 7] = '\0'; strcpy(rname,sname); @@ -558,6 +559,7 @@ char rname[],name[]; } else { strncpy(rname,name,VOLSER_OLDMAXVOLNAME); + rname[VOLSER_OLDMAXVOLNAME] = '\0'; return -1; } } -- 2.39.5