diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 531c6172c3e4baa9a8979fb2ad9797313bfdd385..2fa4f44e8756b476f70b72bc18663a5359d9b252 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -3277,14 +3277,17 @@ static FILE* user_ini_open(scfg_t* scfg, unsigned user_number, BOOL create) return iniOpenFile(path, create); } -BOOL DLLCALL user_get_property(scfg_t* scfg, unsigned user_number, const char* section, const char* key, char* value) +BOOL DLLCALL user_get_property(scfg_t* scfg, unsigned user_number, const char* section, const char* key, char* value, size_t maxlen) { FILE* fp; + char buf[INI_MAX_VALUE_LEN]; fp = user_ini_open(scfg, user_number, /* create: */FALSE); if(fp == NULL) return FALSE; - char* result = iniReadValue(fp, section, key, NULL, value); + char* result = iniReadValue(fp, section, key, NULL, buf); + if(result != NULL) + safe_snprintf(value, maxlen, "%s", result); iniCloseFile(fp); return result != NULL; } diff --git a/src/sbbs3/userdat.h b/src/sbbs3/userdat.h index 4b7d1e93211eb02a57d839971aa9b15496cdac17..9bd104afd946858bcf663e6c766f448bce485530 100644 --- a/src/sbbs3/userdat.h +++ b/src/sbbs3/userdat.h @@ -127,7 +127,7 @@ DLLEXPORT BOOL DLLCALL filter_ip(scfg_t*, const char* prot, const char* reason, ,const char* ip_addr, const char* username, const char* fname); /* user .ini file access */ -DLLEXPORT BOOL DLLCALL user_get_property(scfg_t*, unsigned user_number, const char* section, const char* key, char* value); +DLLEXPORT BOOL DLLCALL user_get_property(scfg_t*, unsigned user_number, const char* section, const char* key, char* value, size_t maxlen); DLLEXPORT BOOL DLLCALL user_set_property(scfg_t*, unsigned user_number, const char* section, const char* key, const char* value); DLLEXPORT BOOL DLLCALL user_set_time_property(scfg_t*, unsigned user_number, const char* section, const char* key, time_t);