Skip to content

Commit d00e5e0

Browse files
committed
Fightwarn: numerous complaints from clang-15 [#823]
Surprised that so many of these were not found sooner. Almost all fall into a few simple categories: * method(void) declared without a "void" * declarations after code ** NUT_UNUSED_VARIABLE() is code ** scoping in switch() cases * a few smartly detected unused variables => added reasonable use-cases (logging or better) Signed-off-by: Jim Klimov <[email protected]>
1 parent 6d992c7 commit d00e5e0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+526
-394
lines changed

NEWS.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ as part of https://github.com/networkupstools/nut/issues/1410 solution.
113113
* Something about compile-time macros or other warnings-related refactoring
114114
seems to have confused the MGE SHUT (Serial HID UPS Transfer) driver
115115
support [#2022]
116+
* Some warnings were not detected by the tools or build scenarios used
117+
earlier, and only got addressed now
116118

117119
- An issue was identified which could cause `libupsclient` parser of device
118120
and host names to crash upon bad inputs (e.g. poorly resolved environment

clients/cgilib.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ static char *unescape(char *buf)
4040
ch = ' ';
4141

4242
if (ch == '%') {
43+
long l;
4344
if (i + 2 > buflen)
4445
fatalx(EXIT_FAILURE, "string too short for escaped char");
4546
hex[0] = buf[++i];
@@ -48,7 +49,7 @@ static char *unescape(char *buf)
4849
if (!isxdigit((unsigned char) hex[0])
4950
|| !isxdigit((unsigned char) hex[1]))
5051
fatalx(EXIT_FAILURE, "bad escape char");
51-
long l = strtol(hex, NULL, 16);
52+
l = strtol(hex, NULL, 16);
5253
assert(l>=0);
5354
assert(l<=255);
5455
ch = (char)l; /* FIXME: Loophole about non-ASCII symbols in top 128 values, or negatives for signed char... */

clients/upsclient.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ static void HandshakeCallback(PRFileDesc *fd, UPSCONN_t *client_data)
329329
int upscli_init(int certverify, const char *certpath,
330330
const char *certname, const char *certpasswd)
331331
{
332+
const char *quiet_init_ssl;
332333
#ifdef WITH_OPENSSL
333334
long ret;
334335
int ssl_mode = SSL_VERIFY_NONE;
@@ -343,7 +344,7 @@ int upscli_init(int certverify, const char *certpath,
343344
NUT_UNUSED_VARIABLE(certpasswd);
344345
#endif /* WITH_OPENSSL | WITH_NSS */
345346

346-
const char *quiet_init_ssl = getenv("NUT_QUIET_INIT_SSL");
347+
quiet_init_ssl = getenv("NUT_QUIET_INIT_SSL");
347348
if (quiet_init_ssl != NULL) {
348349
if (*quiet_init_ssl == '\0'
349350
|| (strncmp(quiet_init_ssl, "true", 4)
@@ -678,8 +679,9 @@ static ssize_t net_read(UPSCONN_t *ups, char *buf, size_t buflen, const time_t t
678679
* 32-bit builds)... Not likely to exceed in 64-bit builds,
679680
* but smaller systems with 16-bits might be endangered :)
680681
*/
682+
int iret;
681683
assert(buflen <= INT_MAX);
682-
int iret = SSL_read(ups->ssl, buf, (int)buflen);
684+
iret = SSL_read(ups->ssl, buf, (int)buflen);
683685
assert(iret <= SSIZE_MAX);
684686
ret = (ssize_t)iret;
685687
#elif defined(WITH_NSS) /* WITH_OPENSSL */
@@ -762,8 +764,9 @@ static ssize_t net_write(UPSCONN_t *ups, const char *buf, size_t buflen, const t
762764
* 32-bit builds)... Not likely to exceed in 64-bit builds,
763765
* but smaller systems with 16-bits might be endangered :)
764766
*/
767+
int iret;
765768
assert(buflen <= INT_MAX);
766-
int iret = SSL_write(ups->ssl, buf, (int)buflen);
769+
iret = SSL_write(ups->ssl, buf, (int)buflen);
767770
assert(iret <= SSIZE_MAX);
768771
ret = (ssize_t)iret;
769772
#elif defined(WITH_NSS) /* WITH_OPENSSL */

clients/upslog.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,9 +559,9 @@ int main(int argc, char **argv)
559559
monhost_ups_anchor = monhost_ups_current;
560560
monhost_ups_current->next = NULL;
561561
monhost_ups_current->monhost = monhost;
562-
monhost_len=1;
562+
monhost_len = 1;
563563
} else {
564-
fatalx(EXIT_FAILURE, "No UPS defined for monitoring - use -s <system>");
564+
fatalx(EXIT_FAILURE, "No UPS defined for monitoring - use -s <system> or -m <ups,logfile>");
565565
}
566566

567567
if (logfn)
@@ -574,6 +574,10 @@ int main(int argc, char **argv)
574574
if (!logformat)
575575
fatalx(EXIT_FAILURE, "No format defined - but this should be impossible");
576576

577+
/* shouldn't happen */
578+
if (!monhost_len)
579+
fatalx(EXIT_FAILURE, "No UPS defined for monitoring - use -s <system> or -m <ups,logfile>");
580+
577581
for (monhost_ups_current = monhost_ups_anchor;
578582
monhost_ups_current != NULL;
579583
monhost_ups_current = monhost_ups_current->next) {

clients/upsmon.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,7 @@ static void addups(int reloading, const char *sys, const char *pvs,
11821182
{
11831183
unsigned int pv;
11841184
utype_t *tmp, *last;
1185+
long lpv;
11851186

11861187
/* the username is now required - no more host-based auth */
11871188

@@ -1191,7 +1192,7 @@ static void addups(int reloading, const char *sys, const char *pvs,
11911192
return;
11921193
}
11931194

1194-
long lpv = strtol(pvs, (char **) NULL, 10);
1195+
lpv = strtol(pvs, (char **) NULL, 10);
11951196

11961197
#if (defined HAVE_PRAGMA_GCC_DIAGNOSTIC_PUSH_POP) && ( (defined HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TYPE_LIMITS) || (defined HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_CONSTANT_OUT_OF_RANGE_COMPARE) || (defined HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE) )
11971198
# pragma GCC diagnostic push

clients/upsset.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,11 +751,12 @@ static void do_type(const char *varname)
751751

752752
if (!strncasecmp(answer[i], "STRING:", 7)) {
753753
char *ptr, len;
754+
long l;
754755

755756
/* split out the :<len> data */
756757
ptr = strchr(answer[i], ':');
757758
*ptr++ = '\0';
758-
long l = strtol(ptr, (char **) NULL, 10);
759+
l = strtol(ptr, (char **) NULL, 10);
759760
assert(l <= 127); /* FIXME: Loophole about longer numbers? Why are we limited to char at all here? */
760761
len = (char)l;
761762

common/common.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ const char *UPS_VERSION = NUT_VERSION_MACRO;
7878
#include <sys/types.h>
7979
#include <limits.h>
8080
#include <stdlib.h>
81-
pid_t get_max_pid_t()
81+
pid_t get_max_pid_t(void)
8282
{
8383
#ifdef HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE
8484
#pragma GCC diagnostic push
@@ -1948,9 +1948,10 @@ static char * get_libname_in_dir(const char* base_libname, size_t base_libname_l
19481948
#if !HAVE_DECL_REALPATH
19491949
struct stat st;
19501950
#endif
1951+
int compres;
19511952

19521953
upsdebugx(5,"Comparing lib %s with dirpath entry %s", base_libname, dirp->d_name);
1953-
int compres = strncmp(dirp->d_name, base_libname, base_libname_length);
1954+
compres = strncmp(dirp->d_name, base_libname, base_libname_length);
19541955
if (compres == 0
19551956
&& dirp->d_name[base_libname_length] == '\0' /* avoid "*.dll.a" etc. */
19561957
) {

drivers/adelsystem_cbi.c

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -900,13 +900,16 @@ int get_dev_state(devreg_t regindx, devstate_t **dvstat)
900900
case LVDC: /* "output.voltage" */
901901
case LCUR: /* "output.current" */
902902
if (reg_val != 0) {
903+
char *fval_s;
904+
double fval;
905+
903906
state->reg.val.ui16 = reg_val;
904-
double fval = reg_val / 1000.00; /* convert mV to V, mA to A */
907+
fval = reg_val / 1000.00; /* convert mV to V, mA to A */
905908
n = snprintf(NULL, 0, "%.2f", fval);
906909
if (ptr != NULL) {
907910
free(ptr);
908911
}
909-
char *fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
912+
fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
910913
ptr = fval_s;
911914
sprintf(fval_s, "%.2f", fval);
912915
state->reg.strval = fval_s;
@@ -921,12 +924,14 @@ int get_dev_state(devreg_t regindx, devstate_t **dvstat)
921924
case BCEF:
922925
case VAC: /* "input.voltage" */
923926
if (reg_val != 0) {
927+
char *reg_val_s;
928+
924929
state->reg.val.ui16 = reg_val;
925930
n = snprintf(NULL, 0, "%d", reg_val);
926931
if (ptr != NULL) {
927932
free(ptr);
928933
}
929-
char *reg_val_s = (char *)xmalloc(sizeof(char) * (n + 1));
934+
reg_val_s = (char *)xmalloc(sizeof(char) * (n + 1));
930935
ptr = reg_val_s;
931936
sprintf(reg_val_s, "%d", reg_val);
932937
state->reg.strval = reg_val_s;
@@ -938,13 +943,16 @@ int get_dev_state(devreg_t regindx, devstate_t **dvstat)
938943
break;
939944
case BSOC: /* "battery.charge" */
940945
if (reg_val != 0) {
946+
double fval;
947+
char *fval_s;
948+
941949
state->reg.val.ui16 = reg_val;
942-
double fval = (double )reg_val * regs[BSOC].scale;
950+
fval = (double )reg_val * regs[BSOC].scale;
943951
n = snprintf(NULL, 0, "%.2f", fval);
944952
if (ptr != NULL) {
945953
free(ptr);
946954
}
947-
char *fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
955+
fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
948956
ptr = fval_s;
949957
sprintf(fval_s, "%.2f", fval);
950958
state->reg.strval = fval_s;
@@ -956,16 +964,21 @@ int get_dev_state(devreg_t regindx, devstate_t **dvstat)
956964
break;
957965
case BTMP: /* "battery.temperature" */
958966
case OTMP: /* "ups.temperature" */
959-
state->reg.val.ui16 = reg_val;
960-
double fval = reg_val - 273.15;
961-
n = snprintf(NULL, 0, "%.2f", fval);
962-
char *fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
963-
if (ptr != NULL) {
964-
free(ptr);
967+
{ /* scoping */
968+
double fval;
969+
char *fval_s;
970+
971+
state->reg.val.ui16 = reg_val;
972+
fval = reg_val - 273.15;
973+
n = snprintf(NULL, 0, "%.2f", fval);
974+
fval_s = (char *)xmalloc(sizeof(char) * (n + 1));
975+
if (ptr != NULL) {
976+
free(ptr);
977+
}
978+
ptr = fval_s;
979+
sprintf(fval_s, "%.2f", fval);
980+
state->reg.strval = fval_s;
965981
}
966-
ptr = fval_s;
967-
sprintf(fval_s, "%.2f", fval);
968-
state->reg.strval = fval_s;
969982
upsdebugx(3, "get_dev_state: variable: %s", state->reg.strval);
970983
break;
971984
case PMNG: /* "ups.status" & "battery.charge" */
@@ -1155,15 +1168,18 @@ int get_dev_state(devreg_t regindx, devstate_t **dvstat)
11551168
* memory corruptions and buggy inputs below...
11561169
*/
11571170
default:
1158-
state->reg.val.ui16 = reg_val;
1159-
n = snprintf(NULL, 0, "%d", reg_val);
1160-
if (ptr != NULL) {
1161-
free(ptr);
1171+
{ /* scoping */
1172+
char *reg_val_s;
1173+
state->reg.val.ui16 = reg_val;
1174+
n = snprintf(NULL, 0, "%d", reg_val);
1175+
if (ptr != NULL) {
1176+
free(ptr);
1177+
}
1178+
reg_val_s = (char *)xmalloc(sizeof(char) * (n + 1));
1179+
ptr = reg_val_s;
1180+
sprintf(reg_val_s, "%d", reg_val);
1181+
state->reg.strval = reg_val_s;
11621182
}
1163-
char *reg_val_s = (char *)xmalloc(sizeof(char) * (n + 1));
1164-
ptr = reg_val_s;
1165-
sprintf(reg_val_s, "%d", reg_val);
1166-
state->reg.strval = reg_val_s;
11671183
break;
11681184
#ifdef __clang__
11691185
# pragma clang diagnostic pop

drivers/al175.c

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -553,9 +553,9 @@ static int al_parse_reply(io_head_t *io_head, raw_data_t *io_buf, /*const*/ raw_
553553
* begin end
554554
*/
555555

556-
int err;
557-
size_t i;
558-
const byte_t *reply = NULL;
556+
int err;
557+
size_t i, io_buf_len;
558+
const byte_t *reply = NULL;
559559

560560
/* 1: extract header and parse it */
561561
/*const*/ raw_data_t raw_reply_head = raw_reply;
@@ -578,7 +578,7 @@ static int al_parse_reply(io_head_t *io_head, raw_data_t *io_buf, /*const*/ raw_
578578
}
579579

580580

581-
/* extract the data */
581+
/* 3: extract the data */
582582
if (io_buf->buf_size < io_head->len) {
583583
upsdebugx(3, "%s: too much data to fit in io_buf\t(%" PRIuSIZE " > %" PRIuSIZE ")",
584584
__func__, io_head->len, io_buf->buf_size);
@@ -592,7 +592,7 @@ static int al_parse_reply(io_head_t *io_head, raw_data_t *io_buf, /*const*/ raw_
592592
*(io_buf->end++) = reply[11+i];
593593

594594
assert(io_buf->end - io_buf->begin >= 0);
595-
size_t io_buf_len = (size_t)(io_buf->end - io_buf->begin);
595+
io_buf_len = (size_t)(io_buf->end - io_buf->begin);
596596
reverse_bits(io_buf->begin, io_buf_len );
597597

598598
upsdebug_hex(3, "\t\t--> payload", io_buf->begin, io_buf_len);
@@ -670,14 +670,15 @@ static int al_check_ack(/*const*/ raw_data_t raw_ack)
670670
/* clear any flow control (copy from powercom.c) */
671671
static void ser_disable_flow_control (void)
672672
{
673-
struct termios tio;
673+
struct termios tio;
674+
tcflag_t x;
674675

675676
tcgetattr (upsfd, &tio);
676677

677678
/* Clumsy rewrite of a one-liner
678679
* tio.c_iflag &= ~ (IXON | IXOFF);
679680
* to avoid type conversion warnings */
680-
tcflag_t x = (IXON | IXOFF);
681+
x = (IXON | IXOFF);
681682
tio.c_iflag &= ~ x;
682683
tio.c_cc[VSTART] = _POSIX_VDISABLE;
683684
tio.c_cc[VSTOP] = _POSIX_VDISABLE;
@@ -688,7 +689,7 @@ static void ser_disable_flow_control (void)
688689
tcsetattr(upsfd, TCSANOW, &tio);
689690
}
690691

691-
static void flush_rx_queue()
692+
static void flush_rx_queue(void)
692693
{
693694
ser_flush_in(upsfd, "", /*verbose=*/nut_debug_level);
694695
}
@@ -702,10 +703,11 @@ static void flush_rx_queue()
702703
*/
703704
static int tx(const char *dmsg, /*const*/ raw_data_t frame)
704705
{
705-
ssize_t err;
706+
ssize_t err;
707+
size_t frame_len;
706708

707709
assert(frame.end - frame.begin >= 0);
708-
size_t frame_len = (size_t)(frame.end - frame.begin);
710+
frame_len = (size_t)(frame.end - frame.begin);
709711

710712
upsdebug_ascii(3, dmsg, frame.begin, frame_len);
711713

@@ -807,9 +809,9 @@ static int scan_for(char c)
807809
*
808810
* @return 0 (ok) -1 (error)
809811
*/
810-
static int recv_command_ack()
812+
static int recv_command_ack(void)
811813
{
812-
ssize_t err;
814+
ssize_t err;
813815
raw_data_t ack;
814816
byte_t ack_buf[8];
815817

@@ -855,12 +857,12 @@ static int recv_command_ack()
855857
*/
856858
static int recv_register_data(io_head_t *io, raw_data_t *io_buf)
857859
{
858-
ssize_t err;
859-
int ret;
860-
raw_data_t reply_head;
861-
raw_data_t reply;
862-
863-
byte_t reply_head_buf[11];
860+
ssize_t err;
861+
int ret;
862+
size_t reply_head_len;
863+
raw_data_t reply_head;
864+
raw_data_t reply;
865+
byte_t reply_head_buf[11];
864866

865867
/* 1: STX */
866868
err = scan_for(STX);
@@ -897,7 +899,7 @@ static int recv_register_data(io_head_t *io, raw_data_t *io_buf)
897899
reply = raw_xmalloc(11/*head*/ + io->len/*data*/ + 2/*ETX BCC*/);
898900

899901
assert (reply_head.end - reply_head.begin >= 0);
900-
size_t reply_head_len = (size_t)(reply_head.end - reply_head.begin);
902+
reply_head_len = (size_t)(reply_head.end - reply_head.begin);
901903

902904
memcpy(reply.end, reply_head.begin, reply_head_len);
903905
reply.end += reply_head_len;
@@ -1053,9 +1055,9 @@ ACT SWITCH_TEMP_COMP (uint16_t on);
10531055
ACT SWITCH_SYM_ALARM (void);
10541056

10551057
/* Implement */
1056-
ACT TOGGLE_PRS_ONOFF () { return al175_do(0x81, 0x80 Z3); }
1057-
ACT CANCEL_BOOST () { return al175_do(0x82, 0x80 Z3); }
1058-
ACT STOP_BATTERY_TEST () { return al175_do(0x83, 0x80 Z3); }
1058+
ACT TOGGLE_PRS_ONOFF (void) { return al175_do(0x81, 0x80 Z3); }
1059+
ACT CANCEL_BOOST (void) { return al175_do(0x82, 0x80 Z3); }
1060+
ACT STOP_BATTERY_TEST (void) { return al175_do(0x83, 0x80 Z3); }
10591061
ACT START_BATTERY_TEST (VV_t EndVolt, mm_t Minutes)
10601062
{ return al175_do(0x83, 0x81, EndVolt, Minutes Z1); }
10611063

@@ -1068,8 +1070,8 @@ ACT SET_DISCONNECT_LEVEL_AND_DELAY
10681070
(VV_t level, mm_t delay)
10691071
{ return al175_do(0x87, 0x84, level, delay Z1); }
10701072

1071-
ACT RESET_ALARMS () { return al175_do(0x88, 0x80 Z3); }
1072-
ACT CHANGE_COMM_PROTOCOL () { return al175_do(0x89, 0x80 Z3); }
1073+
ACT RESET_ALARMS (void) { return al175_do(0x88, 0x80 Z3); }
1074+
ACT CHANGE_COMM_PROTOCOL (void) { return al175_do(0x89, 0x80 Z3); }
10731075
ACT SET_VOLTAGE_AT_ZERO_T (VV_t v) { return al175_do(0x8a, 0x80, v Z2); }
10741076
ACT SET_SLOPE_AT_ZERO_T (VV_t mv_per_degree)
10751077
{ return al175_do(0x8a, 0x81, mv_per_degree Z2); }
@@ -1078,7 +1080,7 @@ ACT SET_MAX_TCOMP_VOLTAGE (VV_t v) { return al175_do(0x8a, 0x82, v Z2); }
10781080
ACT SET_MIN_TCOMP_VOLTAGE (VV_t v) { return al175_do(0x8a, 0x83, v Z2); }
10791081
ACT SWITCH_TEMP_COMP (uint16_t on) { return al175_do(0x8b, 0x80, on Z2); }
10801082

1081-
ACT SWITCH_SYM_ALARM () { return al175_do(0x8c, 0x80 Z3); }
1083+
ACT SWITCH_SYM_ALARM (void) { return al175_do(0x8c, 0x80 Z3); }
10821084

10831085

10841086
/**

0 commit comments

Comments
 (0)