diff options
Diffstat (limited to 'src/libicalss/icalcalendar.c')
-rw-r--r-- | src/libicalss/icalcalendar.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/libicalss/icalcalendar.c b/src/libicalss/icalcalendar.c index 04380f6..c4a8152 100644 --- a/src/libicalss/icalcalendar.c +++ b/src/libicalss/icalcalendar.c @@ -49,6 +49,7 @@ #include <errno.h> #ifdef WIN32 +#include <direct.h> #define mkdir(path, mode) _mkdir(path) #endif @@ -89,9 +90,10 @@ icalerrorenum icalcalendar_create(struct icalcalendar_impl* impl) icalerror_check_arg_re((impl != 0),"impl",ICAL_BADARG_ERROR); path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,BOOKED_DIR); + strncpy(path,impl->dir,PATH_MAX-1); + strncat(path,"/",PATH_MAX-strlen(path)-1); + strncat(path,BOOKED_DIR,PATH_MAX-strlen(path)-1); + path[PATH_MAX-1] = '\0'; r = stat(path,&sbuf); @@ -139,7 +141,7 @@ void icalcalendar_free(icalcalendar* impl) } if (impl->freebusy !=0){ - icalset_free(impl->booked); + icalset_free(impl->freebusy); } if (impl->properties !=0){ @@ -196,9 +198,10 @@ icalset* icalcalendar_get_booked(icalcalendar* impl) icalerror_check_arg_rz((impl != 0),"impl"); dir[0] = '\0'; - strcpy(dir,impl->dir); - strcat(dir,"/"); - strcat(dir,BOOKED_DIR); + strncpy(dir,impl->dir,PATH_MAX-1); + strncat(dir,"/",PATH_MAX-strlen(dir)-1); + strncat(dir,BOOKED_DIR,PATH_MAX-strlen(dir)-1); + dir[PATH_MAX-1] = '\0'; if (impl->booked == 0){ icalerror_clear_errno(); @@ -216,9 +219,10 @@ icalset* icalcalendar_get_incoming(icalcalendar* impl) icalerror_check_arg_rz((impl != 0),"impl"); path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,INCOMING_FILE); + strncpy(path,impl->dir,PATH_MAX-1); + strncat(path,"/",PATH_MAX-strlen(path)-1); + strncat(path,INCOMING_FILE,PATH_MAX-strlen(path)-1); + path[PATH_MAX-1] = '\0'; if (impl->properties == 0){ impl->properties = icalfileset_new(path); @@ -233,9 +237,10 @@ icalset* icalcalendar_get_properties(icalcalendar* impl) icalerror_check_arg_rz((impl != 0),"impl"); path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,PROP_FILE); + strncpy(path,impl->dir,PATH_MAX-1); + strncat(path,"/",PATH_MAX-strlen(path)-1); + strncat(path,PROP_FILE,PATH_MAX-strlen(path)-1); + path[PATH_MAX-1] = '\0'; if (impl->properties == 0){ impl->properties = icalfileset_new(path); @@ -250,10 +255,10 @@ icalset* icalcalendar_get_freebusy(icalcalendar* impl) icalerror_check_arg_rz((impl != 0),"impl"); path[0] = '\0'; - strcpy(path,impl->dir); - strcat(path,"/"); - strcat(path,FBLIST_FILE); - + strncpy(path,impl->dir,PATH_MAX-1); + strncat(path,"/",PATH_MAX-strlen(path)-1); + strncat(path,FBLIST_FILE,PATH_MAX-strlen(path)-1); + path[PATH_MAX-1] = '\0'; if (impl->freebusy == 0){ impl->freebusy = icalfileset_new(path); |