summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Habets <thomas@habets.se>2022-10-30 16:07:16 +0000
committerThomas Habets <thomas@habets.se>2022-10-30 16:14:48 +0000
commitd9a2b7b496c590474ec112be28e1cfd788687b9a (patch)
tree7482e3d362f1d5238313316b36db0c9e5502fa22
parent0ca279e6679c37b96b2ef168a4e203136a24e275 (diff)
downloadarping-d9a2b7b496c590474ec112be28e1cfd788687b9a.tar.gz
Simplify fallback for generating suffix
* Removed fallback for failing to allocate. * Simplified fallback for generating randomness. * Reduce implicit casts. Reduced conversion warnings: 33 -> 28.
-rw-r--r--src/arping.c46
1 files changed, 19 insertions, 27 deletions
diff --git a/src/arping.c b/src/arping.c
index 9682c3c..9f98396 100644
--- a/src/arping.c
+++ b/src/arping.c
@@ -190,7 +190,7 @@ uint32_t dstip;
static uint8_t dstmac[ETH_ALEN];
static char* payload_suffix = NULL;
-static ssize_t payload_suffix_size = -1;
+static size_t payload_suffix_size = 4;
uint32_t srcip; /* autodetected, override with -S/-b/-0 */
uint8_t srcmac[ETH_ALEN]; /* autodetected, override with -s */
@@ -2187,33 +2187,25 @@ arping_main(int argc, char **argv)
// Generate random payload suffix for MAC pings, to be able to
// differentiate from unrelated ping replies.
- if (payload_suffix_size < 0) {
- payload_suffix_size = 4;
- payload_suffix = malloc(payload_suffix_size);
- if (payload_suffix) {
- const ssize_t rc = xgetrandom(payload_suffix, payload_suffix_size, 0);
- if (rc == -1) {
- fprintf(stderr,
- "arping: failed to get %zd random bytes: %s\n",
- payload_suffix_size,
- strerror(errno));
- free(payload_suffix);
- payload_suffix = NULL;
- } else if (payload_suffix_size != rc) {
- fprintf(stderr,
- "arping: only got %zd out of %zd bytes for random suffix\n",
- rc, payload_suffix_size);
- }
- } else {
- fprintf(stderr, "arping: failed to allocate %zd bytes for payload suffix.\n",
- payload_suffix_size);
- }
+ payload_suffix = malloc(payload_suffix_size);
+ if (!payload_suffix) {
+ fprintf(stderr, "arping: failed to allocate %zu bytes for payload suffix.\n",
+ payload_suffix_size);
+ exit(1);
+ }
- if (!payload_suffix) {
- fprintf(stderr, "arping: Using constant suffix.\n");
- payload_suffix = "arping";
- payload_suffix_size = strlen(payload_suffix);
- }
+ strncpy(payload_suffix, "arping", payload_suffix_size);
+ const ssize_t rc = xgetrandom(payload_suffix, payload_suffix_size, 0);
+ if (rc == -1) {
+ fprintf(stderr,
+ "arping: failed to get %zu random bytes: %s\n",
+ payload_suffix_size,
+ strerror(errno));
+ free(payload_suffix);
+ } else if (payload_suffix_size != rc) {
+ fprintf(stderr,
+ "arping: only got %zd out of %zu bytes for random suffix\n",
+ rc, payload_suffix_size);
}
if (((mode == PINGIP) && opt_T)