1 // SPDX-License-Identifier: GPL-2.0 2 #include "aolib.h" 3 #include <string.h> 4 5 void randomize_buffer(void *buf, size_t buflen) 6 { 7 int *p = (int *)buf; 8 size_t words = buflen / sizeof(int); 9 size_t leftover = buflen % sizeof(int); 10 11 if (!buflen) 12 return; 13 14 while (words--) 15 *p++ = rand(); 16 17 if (leftover) { 18 int tmp = rand(); 19 20 memcpy(buf + buflen - leftover, &tmp, leftover); 21 } 22 } 23 24 __printf(3, 4) int test_echo(const char *fname, bool append, 25 const char *fmt, ...) 26 { 27 size_t len, written; 28 va_list vargs; 29 char *msg; 30 FILE *f; 31 32 f = fopen(fname, append ? "a" : "w"); 33 if (!f) 34 return -errno; 35 36 va_start(vargs, fmt); 37 msg = test_snprintf(fmt, vargs); 38 va_end(vargs); 39 if (!msg) { 40 fclose(f); 41 return -1; 42 } 43 len = strlen(msg); 44 written = fwrite(msg, 1, len, f); 45 fclose(f); 46 free(msg); 47 return written == len ? 0 : -1; 48 } 49 50 const struct sockaddr_in6 addr_any6 = { 51 .sin6_family = AF_INET6, 52 }; 53 54 const struct sockaddr_in addr_any4 = { 55 .sin_family = AF_INET, 56 }; 57