diff options
Diffstat (limited to 'apps/settings.c')
-rw-r--r-- | apps/settings.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/apps/settings.c b/apps/settings.c index 9f3047e9df..2d38c4a5ef 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -402,8 +402,8 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len) | |||
402 | strlcpy(buf, start, buf_len); | 402 | strlcpy(buf, start, buf_len); |
403 | else | 403 | else |
404 | { | 404 | { |
405 | int len = (buf_len > (end-start))? end-start: buf_len; | 405 | int len = MIN(buf_len, (end-start) + 1); |
406 | strlcpy(buf, start, len+1); | 406 | strlcpy(buf, start, len); |
407 | } | 407 | } |
408 | return true; | 408 | return true; |
409 | } | 409 | } |
@@ -430,8 +430,8 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len) | |||
430 | strlcpy(buf, start, buf_len); | 430 | strlcpy(buf, start, buf_len); |
431 | else | 431 | else |
432 | { | 432 | { |
433 | int len = (buf_len > (end-start))? end-start: buf_len; | 433 | int len = MIN(buf_len, (end-start) + 1); |
434 | strlcpy(buf, start, len+1); | 434 | strlcpy(buf, start, len); |
435 | } | 435 | } |
436 | return true; | 436 | return true; |
437 | } | 437 | } |
@@ -494,8 +494,11 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len) | |||
494 | settings[i].filename_setting->suffix); | 494 | settings[i].filename_setting->suffix); |
495 | } | 495 | } |
496 | } | 496 | } |
497 | else strlcpy(buf,(char*)settings[i].setting, | 497 | else |
498 | settings[i].filename_setting->max_len); | 498 | { |
499 | int len = MIN(buf_len, settings[i].filename_setting->max_len); | ||
500 | strlcpy(buf,(char*)settings[i].setting,len); | ||
501 | } | ||
499 | break; | 502 | break; |
500 | } /* switch () */ | 503 | } /* switch () */ |
501 | return true; | 504 | return true; |