aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2023-11-16 21:16:34 +0100
committerThomas Voss <mail@thomasvoss.com> 2023-11-16 21:16:34 +0100
commit296450a16c110c86c890ef98c2c0da403cf96876 (patch)
tree8da8544da2713c1361a1fa5716afee9cb0d5038f
parentd0acd88463bfe912577a0c0054b948b685384f39 (diff)
Silence compiler warnings
-rw-r--r--Makefile9
-rw-r--r--b32.c5
-rw-r--r--b32.h1
-rw-r--r--main.c27
4 files changed, 24 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index b8198a4..de03616 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,10 @@
CC = cc
-CFLAGS = -Wall -Wextra -Wpedantic -Werror \
- -O3 -march=native -mtune=native \
- -fomit-frame-pointer -pipe
+CFLAGS = \
+ -Wall -Wextra -pedantic -Wshadow -Wpointer-arith -Wcast-align \
+ -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations \
+ -Wredundant-decls -Wnested-externs -Winline -Wno-long-long \
+ -Wconversion -Wstrict-prototypes \
+ -O3 -march=native -mtune=native -pipe
LDLIBS = -luriparser -lssl -lcrypto
PREFIX = /usr/local
diff --git a/b32.c b/b32.c
index 1c50aa5..be8532f 100644
--- a/b32.c
+++ b/b32.c
@@ -2,6 +2,10 @@
#include <stddef.h>
#include <stdint.h>
+#include "b32.h"
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
static const uint8_t ctov[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -20,6 +24,7 @@ static const uint8_t ctov[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
};
+#pragma GCC diagnostic pop
bool
b32toa(uint8_t *dst, const char *src, size_t len)
diff --git a/b32.h b/b32.h
index 1555dd2..d3c0f55 100644
--- a/b32.h
+++ b/b32.h
@@ -2,6 +2,7 @@
#define B32_B32_H
#include <stdbool.h>
+#include <stddef.h>
#include <stdint.h>
bool b32toa(uint8_t *, const char *, size_t);
diff --git a/main.c b/main.c
index e7fd8de..67a4815 100644
--- a/main.c
+++ b/main.c
@@ -30,18 +30,17 @@ typedef unsigned char uchar;
struct totp_config {
const char *enc_sec;
- long len, p;
+ long len, p;
};
extern char *__progname;
static int rv;
-static const char *bad_scheme = "Invalid scheme ‘%.*s’; expected ‘otpauth’";
-static const char *bad_param = "Invalid ‘%s’ parameter provided";
+static const char *bad_scheme = "Invalid scheme ‘%.*s’; expected ‘otpauth’";
+static const char *bad_param = "Invalid ‘%s’ parameter provided";
static const char *empty_param = "Empty ‘%s’ parameter provided";
-static const char *usage_s =
- "Usage: %s [-d digits] [-p period] [-u] [secret ...]\n";
+static const char *usage_s = "Usage: %s [-d digits] [-p period] [-u] [secret ...]\n";
static void usage(void);
static void totp_print(struct totp_config, char *, bool);
@@ -141,13 +140,13 @@ uri_parse(struct totp_config *conf, const char *uri_raw)
const char *epos;
if (uriParseSingleUriA(&uri, uri_raw, &epos) != URI_SUCCESS) {
- len = epos - uri_raw + 24 + strlen(__progname);
+ len = (size_t)(epos - uri_raw) + 24 + strlen(__progname);
WARNX_AND_RET("Failed to parse URI ‘%s’\n"
"%*c Error detected here",
uri_raw, (int)len, '^');
}
- len = uri.scheme.afterLast - uri.scheme.first;
+ len = (size_t)(uri.scheme.afterLast - uri.scheme.first);
reject = len != strlen("otpauth");
reject = reject || strncasecmp(uri.scheme.first, "otpauth", len) != 0;
@@ -209,7 +208,7 @@ totp(struct totp_config conf, uint32_t *code)
clean = true;
}
- keylen = old / 1.6;
+ keylen = (size_t)((double)old / 1.6);
if ((key = calloc(keylen + 1, sizeof(char))) == NULL)
err(EXIT_FAILURE, "calloc");
b32toa(key, enc_sec, enc_sec_len);
@@ -223,12 +222,10 @@ totp(struct totp_config conf, uint32_t *code)
if (big_endian())
memcpy(buf, &epoch, sizeof(time_t));
- else {
- for (size_t i = 0; i < sizeof(buf); i++)
- buf[i] = (epoch >> (8 * (sizeof(buf) - 1 - i))) & 0xFF;
- }
+ else for (size_t i = sizeof(buf); i --> 0;)
+ buf[sizeof(buf)-1-i] = (uint8_t)((epoch >> 8 * i) & 0xFF);
- mac = HMAC(EVP_sha1(), key, keylen, buf, sizeof(buf), NULL, NULL);
+ mac = HMAC(EVP_sha1(), key, (int)keylen, buf, sizeof(buf), NULL, NULL);
if (mac == NULL)
WARNX_AND_RET("Failed to compute HMAC SHA-1 hash");
@@ -238,7 +235,7 @@ totp(struct totp_config conf, uint32_t *code)
| (mac[off + 1] & 0xFF) << 16
| (mac[off + 2] & 0xFF) << 8
| (mac[off + 3] & 0xFF) << 0;
- *code = binc % pow32(10, conf.len);
+ *code = binc % pow32(10, (uint32_t)conf.len);
if (clean)
free(enc_sec);
@@ -258,7 +255,7 @@ strtol_safe(long *n, const char *s)
uint32_t
pow32(uint32_t x, uint32_t y)
{
- int n = x;
+ uint32_t n = x;
if (y == 0)
return 1;
while (--y != 0)