diff options
Diffstat (limited to 'apps/settings.c')
-rw-r--r-- | apps/settings.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/apps/settings.c b/apps/settings.c index edf4d2b13f..7c4dc4d124 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -35,8 +35,7 @@ | |||
35 | #include "backlight.h" | 35 | #include "backlight.h" |
36 | #include "audio.h" | 36 | #include "audio.h" |
37 | #include "talk.h" | 37 | #include "talk.h" |
38 | #include "strlcpy.h" | 38 | #include "string-extra.h" |
39 | #include "strcasestr.h" | ||
40 | #include "rtc.h" | 39 | #include "rtc.h" |
41 | #include "power.h" | 40 | #include "power.h" |
42 | #include "ata_idle_notify.h" | 41 | #include "ata_idle_notify.h" |
@@ -251,7 +250,7 @@ bool cfg_string_to_int(int setting_id, int* out, const char* str) | |||
251 | } | 250 | } |
252 | else return false; | 251 | else return false; |
253 | } | 252 | } |
254 | strlcpy(temp, start, end-start+1); | 253 | strmemccpy(temp, start, end-start+1); |
255 | if (!strcmp(str, temp)) | 254 | if (!strcmp(str, temp)) |
256 | { | 255 | { |
257 | *out = count; | 256 | *out = count; |
@@ -343,18 +342,22 @@ bool settings_load_config(const char* file, bool apply) | |||
343 | size_t len = strlen(dir); | 342 | size_t len = strlen(dir); |
344 | if (!strncasecmp(value, dir, len)) | 343 | if (!strncasecmp(value, dir, len)) |
345 | { | 344 | { |
346 | strlcpy(storage, &value[len], MAX_PATH); | 345 | strmemccpy(storage, &value[len], MAX_PATH); |
347 | } | 346 | } |
348 | else strlcpy(storage, value, MAX_PATH); | 347 | else |
348 | strmemccpy(storage, value, MAX_PATH); | ||
349 | |||
349 | } | 350 | } |
350 | else strlcpy(storage, value, MAX_PATH); | 351 | else |
352 | strmemccpy(storage, value, MAX_PATH); | ||
353 | |||
351 | if (settings[i].filename_setting->suffix) | 354 | if (settings[i].filename_setting->suffix) |
352 | { | 355 | { |
353 | char *s = strcasestr(storage,settings[i].filename_setting->suffix); | 356 | char *s = strcasestr(storage,settings[i].filename_setting->suffix); |
354 | if (s) *s = '\0'; | 357 | if (s) *s = '\0'; |
355 | } | 358 | } |
356 | strlcpy((char*)settings[i].setting, storage, | 359 | strmemccpy((char*)settings[i].setting, storage, |
357 | settings[i].filename_setting->max_len); | 360 | settings[i].filename_setting->max_len); |
358 | break; | 361 | break; |
359 | } | 362 | } |
360 | } | 363 | } |
@@ -393,11 +396,11 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len) | |||
393 | if (value[count] == val) | 396 | if (value[count] == val) |
394 | { | 397 | { |
395 | if (end == NULL) | 398 | if (end == NULL) |
396 | strlcpy(buf, start, buf_len); | 399 | strmemccpy(buf, start, buf_len); |
397 | else | 400 | else |
398 | { | 401 | { |
399 | int len = MIN(buf_len, (end-start) + 1); | 402 | int len = MIN(buf_len, (end-start) + 1); |
400 | strlcpy(buf, start, len); | 403 | strmemccpy(buf, start, len); |
401 | } | 404 | } |
402 | return true; | 405 | return true; |
403 | } | 406 | } |
@@ -421,11 +424,11 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len) | |||
421 | } | 424 | } |
422 | end = strchr(start,','); | 425 | end = strchr(start,','); |
423 | if (end == NULL) | 426 | if (end == NULL) |
424 | strlcpy(buf, start, buf_len); | 427 | strmemccpy(buf, start, buf_len); |
425 | else | 428 | else |
426 | { | 429 | { |
427 | int len = MIN(buf_len, (end-start) + 1); | 430 | int len = MIN(buf_len, (end-start) + 1); |
428 | strlcpy(buf, start, len); | 431 | strmemccpy(buf, start, len); |
429 | } | 432 | } |
430 | return true; | 433 | return true; |
431 | } | 434 | } |
@@ -491,7 +494,7 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len) | |||
491 | else | 494 | else |
492 | { | 495 | { |
493 | int len = MIN(buf_len, settings[i].filename_setting->max_len); | 496 | int len = MIN(buf_len, settings[i].filename_setting->max_len); |
494 | strlcpy(buf,(char*)settings[i].setting,len); | 497 | strmemccpy(buf,(char*)settings[i].setting,len); |
495 | } | 498 | } |
496 | break; | 499 | break; |
497 | } /* switch () */ | 500 | } /* switch () */ |
@@ -1071,8 +1074,8 @@ void reset_setting(const struct settings_list *setting, void *var) | |||
1071 | break; | 1074 | break; |
1072 | case F_T_CHARPTR: | 1075 | case F_T_CHARPTR: |
1073 | case F_T_UCHARPTR: | 1076 | case F_T_UCHARPTR: |
1074 | strlcpy((char*)var, setting->default_val.charptr, | 1077 | strmemccpy((char*)var, setting->default_val.charptr, |
1075 | setting->filename_setting->max_len); | 1078 | setting->filename_setting->max_len); |
1076 | break; | 1079 | break; |
1077 | } | 1080 | } |
1078 | } | 1081 | } |
@@ -1265,6 +1268,6 @@ void set_file(const char* filename, char* setting, const int maxlen) | |||
1265 | if (len > maxlen) | 1268 | if (len > maxlen) |
1266 | return; | 1269 | return; |
1267 | 1270 | ||
1268 | strlcpy(setting, fptr, len); | 1271 | strmemccpy(setting, fptr, len); |
1269 | settings_save(); | 1272 | settings_save(); |
1270 | } | 1273 | } |