From 98ebe15f45cea81bb7f16a861d0274d8e0061003 Mon Sep 17 00:00:00 2001 From: halleyscometsw Date: Tue, 21 Aug 2012 15:34:10 +0000 Subject: [PATCH] safer file name copies git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@990 51a99a44-fe44-0410-b1ba-c3e57ba2b86b --- src/streamfile.c | 6 ++++-- unix/vfs.c | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/streamfile.c b/src/streamfile.c index 4370d98c..b76604cd 100644 --- a/src/streamfile.c +++ b/src/streamfile.c @@ -123,7 +123,8 @@ static off_t get_offset_stdio(STDIOSTREAMFILE *streamFile) { } static void get_name_stdio(STDIOSTREAMFILE *streamfile,char *buffer,size_t length) { - strcpy(buffer,streamfile->name); + strncpy(buffer,streamfile->name,length); + buffer[length-1]='\0'; } #ifdef PROFILE_STREAMFILE @@ -190,7 +191,8 @@ static STREAMFILE * open_stdio_streamfile_buffer_by_FILE(FILE *infile,const char streamfile->buffersize = buffersize; streamfile->buffer = buffer; - strcpy(streamfile->name,filename); + strncpy(streamfile->name,filename,sizeof(streamfile->name)); + streamfile->name[sizeof(streamfile->name)-1] = '\0'; return &streamfile->sf; } diff --git a/unix/vfs.c b/unix/vfs.c index 5a4674fb..36f64d20 100644 --- a/unix/vfs.c +++ b/unix/vfs.c @@ -65,12 +65,14 @@ static size_t get_offset_vfs(VFSSTREAMFILE *streamfile) static void get_name_vfs(VFSSTREAMFILE *streamfile,char *buffer,size_t length) { - strcpy(buffer,streamfile->name); + strncpy(buffer,streamfile->name,length); + buffer[length-1]='\0'; } static void get_realname_vfs(VFSSTREAMFILE *streamfile,char *buffer,size_t length) { - strcpy(buffer,streamfile->realname); + strncpy(buffer,streamfile->realname,length); + buffer[length-1]='\0'; } static STREAMFILE *open_vfs_by_VFSFILE(VFSFile *file,const char *path); @@ -119,10 +121,12 @@ static STREAMFILE *open_vfs_by_VFSFILE(VFSFile *file,const char *path) streamfile->vfsFile = file; streamfile->offset = 0; - strcpy(streamfile->name,path); + strncpy(streamfile->name,path,sizeof(streamfile->name)); + streamfile->name[sizeof(streamfile->name)-1] = '\0'; { gchar* realname = g_filename_from_uri(path,NULL,NULL); - strcpy(streamfile->realname,realname); + strncpy(streamfile->realname,realname,sizeof(streamfile->realname)); + streamfile->realname[sizeof(streamfile->realname)-1] = '\0'; g_free(realname); }