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);