Skip to content

Commit be0035c

Browse files
committed
Implement string assembly with memcpy
add_simple_field in auditd-event.c now performs its concatenation using memcpy, skipping unnecessary snprintf formatting.
1 parent e0f2651 commit be0035c

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/auditd-event.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ static int add_simple_field(auparse_state_t *au, size_t len_left, int encode)
391391
enc = audit_encode_nv_string(field_name, value, vlen);
392392
if (enc == NULL)
393393
return 0;
394-
tlen = 1 + strlen(enc) + 1;
394+
vlen = strlen(enc);
395+
tlen = 1 + vlen + 1;
395396
} else
396397
// calculate length to use
397398
tlen = 1 + nlen + 1 + vlen + 1;
@@ -412,12 +413,19 @@ static int add_simple_field(auparse_state_t *au, size_t len_left, int encode)
412413
num = 0;
413414

414415
// Add the field
415-
if (encode) {
416-
num += snprintf(ptr, tlen, "%s", enc);
416+
if (encode) { // encoded: "%s"
417+
memcpy(ptr, enc, vlen);
418+
ptr[vlen] = 0;
419+
num += vlen;
417420
free(enc);
418-
} else
419-
num += snprintf(ptr, tlen, "%s=%s", field_name, value);
420-
421+
} else { // plain: "%s=%s"
422+
memcpy(ptr, field_name, nlen);
423+
ptr += nlen;
424+
*ptr++ = '=';
425+
memcpy(ptr, value, vlen);
426+
ptr[vlen] = 0;
427+
num += nlen + 1 + vlen;
428+
}
421429
return num;
422430
}
423431

0 commit comments

Comments
 (0)