mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-05-02 06:46:29 -04:00
Final refinements for security and performance
- Add explicit null termination for consistency - Optimize string concatenation to avoid redundant strlen calls - Track actual characters added to maintain O(n) complexity - Improve code clarity with better comments Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
This commit is contained in:
parent
12fe0abca1
commit
21088fe86a
2 changed files with 15 additions and 5 deletions
|
|
@ -601,12 +601,21 @@ static char *combine_args_until_empty(char *values[], int count) {
|
||||||
size_t current_len = 0;
|
size_t current_len = 0;
|
||||||
for (int i = 0; i < first_empty; i++) {
|
for (int i = 0; i < first_empty; i++) {
|
||||||
if (i > 0 && current_len < total_len) {
|
if (i > 0 && current_len < total_len) {
|
||||||
strncat(combined, ",", total_len - current_len);
|
size_t remaining = total_len - current_len;
|
||||||
current_len = strlen(combined);
|
size_t to_add = (remaining < 1) ? 0 : 1;
|
||||||
|
if (to_add > 0) {
|
||||||
|
strncat(combined, ",", remaining);
|
||||||
|
current_len += to_add; // We know we added 1 character
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (current_len < total_len) {
|
if (current_len < total_len) {
|
||||||
strncat(combined, values[i], total_len - current_len);
|
size_t remaining = total_len - current_len;
|
||||||
current_len = strlen(combined);
|
size_t val_len = strlen(values[i]);
|
||||||
|
size_t to_add = (val_len < remaining) ? val_len : remaining;
|
||||||
|
if (to_add > 0) {
|
||||||
|
strncat(combined, values[i], remaining);
|
||||||
|
current_len += to_add;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,8 +77,9 @@ void get_layout_abbr(char *abbr, const char *full_name) {
|
||||||
abbr[2] = '\0';
|
abbr[2] = '\0';
|
||||||
} else {
|
} else {
|
||||||
// 5. 最终回退:返回 "xx"
|
// 5. 最终回退:返回 "xx"
|
||||||
// strncpy will null-terminate since source is shorter than buffer
|
// Explicit null termination for consistency
|
||||||
strncpy(abbr, "xx", LAYOUT_ABBR_SIZE - 1);
|
strncpy(abbr, "xx", LAYOUT_ABBR_SIZE - 1);
|
||||||
|
abbr[LAYOUT_ABBR_SIZE - 1] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue