diff options
Diffstat (limited to 'mysys/my_getwd.c')
-rw-r--r-- | mysys/my_getwd.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index e0c5b94b53e..e6b867e2753 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -50,11 +50,16 @@ int my_getwd(char * buf, size_t size, myf MyFlags) DBUG_PRINT("my",("buf: 0x%lx size: %u MyFlags %d", (long) buf, (uint) size, MyFlags)); + if (size < 1) + return(-1); + if (curr_dir[0]) /* Current pos is saved here */ VOID(strmake(buf,&curr_dir[0],size-1)); else { #if defined(HAVE_GETCWD) + if (size < 2) + return(-1); if (!getcwd(buf,(uint) (size-2)) && MyFlags & MY_WME) { my_errno=errno; @@ -68,6 +73,8 @@ int my_getwd(char * buf, size_t size, myf MyFlags) strmake(buf,pathname,size-1); } #elif defined(VMS) + if (size < 2) + return(-1); if (!getcwd(buf,size-2,1) && MyFlags & MY_WME) { my_errno=errno; |