Skip to content

-Werror=... #1220

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 29 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6cedeac
src/useradd.c: Remove unused variable
alejandro-colomar Feb 20, 2025
ecfaab1
src/gpasswd.c: Remove unused parameter $1 of check_perms()
alejandro-colomar Feb 20, 2025
94ae417
lib/, src/: Remove unused parameter $2 of audit_logger()
alejandro-colomar Feb 21, 2025
b1147d6
lib/copydir.c: Remove unused parameter $3 of copy_symlink()
alejandro-colomar Feb 21, 2025
d8cc2df
lib/copydir.c: Remove unused parameter $2 of copy_hardlink()
alejandro-colomar Feb 21, 2025
f74c3c0
lib/: Remove unused parameter $3 of password_check() and propagate
alejandro-colomar Feb 21, 2025
aa0b2ec
lib/obscure.c: Remove unused parameter $1 of palindrome()
alejandro-colomar Feb 21, 2025
a1c13db
lib/, src/: Remove unused parameter $3 of passwd_check()
alejandro-colomar Feb 21, 2025
02f3399
lib/string/strspn/: Add missing const
alejandro-colomar Feb 19, 2025
5d4f98d
autogen.sh: CFLAGS: Promote -Wdiscarded-qualifiers to an error
alejandro-colomar Feb 20, 2025
1121c32
src/: Unname unused parameter of main()
alejandro-colomar Feb 20, 2025
e73fa10
lib/, src/ tests/: Unname unused parameters in callbacks
alejandro-colomar Feb 21, 2025
a9bbd0c
lib/logind.c: Unname unused function parameter
alejandro-colomar Feb 21, 2025
761f955
lib/, src/: Add [[gnu::unused]] to parameters used in conditionally-c…
alejandro-colomar Feb 21, 2025
577c156
autogen.sh: CFLAGS: Add many errors (-Werror=...)
alejandro-colomar Feb 21, 2025
03d2bbc
lib/sssd.h: sssd_flush_cache(): Define as static inline function
alejandro-colomar Feb 21, 2025
01f039d
lib/prefix_flag.c: Add [[gnu::unused]] to variable used in conditiona…
alejandro-colomar Feb 21, 2025
e12d6f6
tests/unit/test_snprintf.c: Ignore diagnostic in test
alejandro-colomar Feb 21, 2025
fd85fec
tests/unit/test_strncpy.c: Remove STRNCPY() tests
alejandro-colomar Feb 21, 2025
96945d9
src/login.c: main(): Wrap uses of 'subroot' in ifndef USE_PAM
alejandro-colomar Feb 21, 2025
9f32dbe
lib/: Use '(void)' to define a function with 0 parameters
alejandro-colomar Feb 22, 2025
200807b
lib/: addsh(): Add 'short' variant of addsl()
alejandro-colomar Feb 22, 2025
124b173
lib/failure.c: Use addsh() instead of UB
alejandro-colomar Feb 22, 2025
e1b5122
lib/idmapping.c: Fix format specifier for int
alejandro-colomar Feb 22, 2025
aea1919
lib/, src/: Use (intmax_t) to print a gid_t/uid_t
alejandro-colomar Feb 22, 2025
28ff5d2
lib/subordinateio.c: Parse a uid_t with get_uid() instead of sscanf(3)
alejandro-colomar Feb 22, 2025
3626136
src/useradd.c: Set 'path' closer to its first use
alejandro-colomar Feb 22, 2025
4a34a60
src/useradd.c: create_home(): Use dynamic memory instead of an unboun…
alejandro-colomar Feb 22, 2025
c2ca033
lib/sub.c: subsystem(): Prevent -Wstrict-overflow diagnostic
alejandro-colomar Feb 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 131 additions & 1 deletion autogen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,142 @@ autoreconf -v -f --install "$(dirname "$0")" || exit 1
CFLAGS="-O2"
CFLAGS="$CFLAGS -Wall"
CFLAGS="$CFLAGS -Wextra"
CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
CFLAGS="$CFLAGS -Werror=char-subscripts"
CFLAGS="$CFLAGS -Werror=duplicate-decl-specifier"
CFLAGS="$CFLAGS -Werror=format"
CFLAGS="$CFLAGS -Wno-error=format-zero-length" # no-error
CFLAGS="$CFLAGS -Werror=format-contains-nul"
CFLAGS="$CFLAGS -Werror=format-contains-nul"
CFLAGS="$CFLAGS -Werror=format-extra-args"
CFLAGS="$CFLAGS -Werror=format-overflow=2"
CFLAGS="$CFLAGS -Werror=format-security"
CFLAGS="$CFLAGS -Werror=format-signedness"
CFLAGS="$CFLAGS -Werror=format-truncation=1"
CFLAGS="$CFLAGS -Werror=nonnull"
CFLAGS="$CFLAGS -Werror=nonnull-compare"
CFLAGS="$CFLAGS -Werror=null-dereference"
CFLAGS="$CFLAGS -Werror=infinite-recursion"
CFLAGS="$CFLAGS -Werror=init-self"
CFLAGS="$CFLAGS -Werror=implicit-int"
CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
CFLAGS="$CFLAGS -Werror=implicit-fallthrough=5"
CFLAGS="$CFLAGS -Werror=if-not-aligned"
CFLAGS="$CFLAGS -Werror=ignored-qualifiers"
CFLAGS="$CFLAGS -Werror=ignored-attributes"
CFLAGS="$CFLAGS -Werror=main"
CFLAGS="$CFLAGS -Werror=misleading-indentation"
CFLAGS="$CFLAGS -Werror=missing-attributes"
CFLAGS="$CFLAGS -Werror=missing-braces"
CFLAGS="$CFLAGS -Werror=mismatched-dealloc"
CFLAGS="$CFLAGS -Werror=multistatement-macros"
CFLAGS="$CFLAGS -Werror=parentheses"
CFLAGS="$CFLAGS -Werror=sequence-point"
CFLAGS="$CFLAGS -Werror=return-local-addr"
CFLAGS="$CFLAGS -Werror=return-type"
CFLAGS="$CFLAGS -Werror=shift-count-negative"
CFLAGS="$CFLAGS -Werror=shift-count-overflow"
CFLAGS="$CFLAGS -Werror=shift-negative-value"
CFLAGS="$CFLAGS -Werror=shift-overflow=2"
CFLAGS="$CFLAGS -Werror=switch"
CFLAGS="$CFLAGS -Werror=switch-enum"
CFLAGS="$CFLAGS -Werror=switch-bool"
CFLAGS="$CFLAGS -Werror=switch-outside-range"
CFLAGS="$CFLAGS -Werror=switch-unreachable"
CFLAGS="$CFLAGS -Werror=unused-but-set-parameter"
CFLAGS="$CFLAGS -Werror=unused-function"
CFLAGS="$CFLAGS -Werror=unused-label"
CFLAGS="$CFLAGS -Werror=unused-local-typedefs"
CFLAGS="$CFLAGS -Werror=unused-parameter"
CFLAGS="$CFLAGS -Werror=unused-variable"
CFLAGS="$CFLAGS -Werror=unused-const-variable=1"
CFLAGS="$CFLAGS -Werror=unused-value"
CFLAGS="$CFLAGS -Werror=use-after-free=3"
CFLAGS="$CFLAGS -Werror=uninitialized"
CFLAGS="$CFLAGS -Werror=invalid-memory-model"
CFLAGS="$CFLAGS -Werror=maybe-uninitialized"
CFLAGS="$CFLAGS -Werror=unknown-pragmas"
CFLAGS="$CFLAGS -Werror=pragmas"
CFLAGS="$CFLAGS -Werror=prio-ctor-dtor"
CFLAGS="$CFLAGS -Werror=strict-aliasing=3"
CFLAGS="$CFLAGS -Werror=strict-overflow=5"
CFLAGS="$CFLAGS -Werror=string-compare"
CFLAGS="$CFLAGS -Werror=stringop-overflow=4"
CFLAGS="$CFLAGS -Werror=stringop-truncation"
CFLAGS="$CFLAGS -Werror=alloc-size-larger-than=20999000"
CFLAGS="$CFLAGS -Werror=array-bounds=3"
CFLAGS="$CFLAGS -Werror=array-compare"
CFLAGS="$CFLAGS -Werror=array-parameter=2"
CFLAGS="$CFLAGS -Werror=bool-compare"
CFLAGS="$CFLAGS -Werror=bool-operation"
CFLAGS="$CFLAGS -Werror=duplicated-branches"
CFLAGS="$CFLAGS -Werror=duplicated-cond"
CFLAGS="$CFLAGS -Werror=frame-address"
CFLAGS="$CFLAGS -Werror=discarded-qualifiers"
CFLAGS="$CFLAGS -Werror=discarded-array-qualifiers"
CFLAGS="$CFLAGS -Werror=incompatible-pointer-types"
CFLAGS="$CFLAGS -Werror=int-conversion"
CFLAGS="$CFLAGS -Werror=tautological-compare"
CFLAGS="$CFLAGS -Werror=trampolines"
CFLAGS="$CFLAGS -Werror=larger-than=20999000"
CFLAGS="$CFLAGS -Werror=frame-larger-than=20000"
CFLAGS="$CFLAGS -Werror=free-nonheap-object"
CFLAGS="$CFLAGS -Werror=pointer-compare"
CFLAGS="$CFLAGS -Werror=type-limits"
CFLAGS="$CFLAGS -Werror=absolute-value"
CFLAGS="$CFLAGS -Werror=comment"
CFLAGS="$CFLAGS -Werror=trigraphs"
CFLAGS="$CFLAGS -Werror=endif-labels"
CFLAGS="$CFLAGS -Werror=cast-align=strict"
CFLAGS="$CFLAGS -Werror=cast-function-type"
CFLAGS="$CFLAGS -Werror=clobbered"
CFLAGS="$CFLAGS -Werror=dangling-pointer=2"
CFLAGS="$CFLAGS -Werror=date-time"
CFLAGS="$CFLAGS -Werror=empty-body"
CFLAGS="$CFLAGS -Werror=enum-compare"
CFLAGS="$CFLAGS -Werror=enum-conversion"
CFLAGS="$CFLAGS -Werror=jump-misses-init"
CFLAGS="$CFLAGS -Werror=sign-compare"
CFLAGS="$CFLAGS -Werror=scalar-storage-order"
CFLAGS="$CFLAGS -Werror=sizeof-array-div"
CFLAGS="$CFLAGS -Werror=sizeof-pointer-div"
CFLAGS="$CFLAGS -Werror=sizeof-pointer-memaccess"
CFLAGS="$CFLAGS -Werror=sizeof-array-argument"
CFLAGS="$CFLAGS -Werror=memset-elt-size"
CFLAGS="$CFLAGS -Werror=memset-transposed-args"
CFLAGS="$CFLAGS -Werror=address"
CFLAGS="$CFLAGS -Werror=address-of-packed-member"
CFLAGS="$CFLAGS -Werror=logical-op"
CFLAGS="$CFLAGS -Werror=logical-not-parentheses"
CFLAGS="$CFLAGS -Werror=aggregate-return"
CFLAGS="$CFLAGS -Werror=aggressive-loop-optimizations"
CFLAGS="$CFLAGS -Werror=attributes"
CFLAGS="$CFLAGS -Werror=builtin-declaration-mismatch"
CFLAGS="$CFLAGS -Werror=builtin-macro-redefined"
CFLAGS="$CFLAGS -Werror=missing-parameter-type"
CFLAGS="$CFLAGS -Werror=missing-field-initializers"
CFLAGS="$CFLAGS -Werror=multichar"
CFLAGS="$CFLAGS -Werror=normalized"
CFLAGS="$CFLAGS -Werror=attribute-warning"
CFLAGS="$CFLAGS -Werror=overflow"
CFLAGS="$CFLAGS -Werror=odr"
CFLAGS="$CFLAGS -Werror=override-init"
CFLAGS="$CFLAGS -Werror=override-init-side-effects"
CFLAGS="$CFLAGS -Werror=packed"
CFLAGS="$CFLAGS -Werror=packed-bitfield-compat"
CFLAGS="$CFLAGS -Werror=packed-not-aligned"
CFLAGS="$CFLAGS -Werror=restrict"
CFLAGS="$CFLAGS -Werror=nested-externs"
CFLAGS="$CFLAGS -Werror=int-in-bool-context"
CFLAGS="$CFLAGS -Werror=int-to-pointer-cast"
CFLAGS="$CFLAGS -Werror=pointer-to-int-cast"
CFLAGS="$CFLAGS -Werror=invalid-pch"
CFLAGS="$CFLAGS -Werror=varargs"
CFLAGS="$CFLAGS -Werror=vla-larger-than=20000"
CFLAGS="$CFLAGS -Werror=vla-parameter"
CFLAGS="$CFLAGS -Werror=volatile-register-var"
CFLAGS="$CFLAGS -Werror=pointer-sign"
CFLAGS="$CFLAGS -Werror=overlength-strings"
CFLAGS="$CFLAGS -Werror=designated-init"
CFLAGS="$CFLAGS -Wno-expansion-to-defined"
CFLAGS="$CFLAGS -Wno-unknown-attributes"
CFLAGS="$CFLAGS -Wno-unknown-warning-option"
Expand Down
5 changes: 4 additions & 1 deletion lib/adds.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023, Alejandro Colomar <[email protected]>
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <[email protected]>
// SPDX-License-Identifier: BSD-3-Clause


Expand All @@ -9,5 +9,8 @@
#include <stddef.h>


extern inline short addsh2(short a, short b);
extern inline long addsl2(long a, long b);

extern inline short addshN(size_t n, short addend[n]);
extern inline long addslN(size_t n, long addend[n]);
50 changes: 49 additions & 1 deletion lib/adds.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <[email protected]>
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <[email protected]>
// SPDX-License-Identifier: BSD-3-Clause


Expand All @@ -16,6 +16,14 @@
#include "sizeof.h"


#define addsh(a, b, ...) \
({ \
short addend_[] = {a, b, __VA_ARGS__}; \
\
addshN(countof(addend_), addend_); \
})


#define addsl(a, b, ...) \
({ \
long addend_[] = {a, b, __VA_ARGS__}; \
Expand All @@ -24,10 +32,27 @@
})


inline short addsh2(short a, short b);
inline long addsl2(long a, long b);

inline short addshN(size_t n, short addend[n]);
inline long addslN(size_t n, long addend[n]);


inline short
addsh2(short a, short b)
{
if (a > 0 && b > SHRT_MAX - a) {
errno = EOVERFLOW;
return SHRT_MAX;
}
if (a < 0 && b < SHRT_MIN - a) {
errno = EOVERFLOW;
return SHRT_MIN;
}
return a + b;
}

inline long
addsl2(long a, long b)
{
Expand All @@ -43,6 +68,29 @@ addsl2(long a, long b)
}


inline short
addshN(size_t n, short addend[n])
{
int e;

if (n == 0) {
errno = EDOM;
return 0;
}

e = errno;
while (n > 1) {
QSORT(addend, n);

errno = 0;
addend[0] = addsh2(addend[0], addend[--n]);
if (errno == EOVERFLOW)
return addend[0];
}
errno = e;
return addend[0];
}

inline long
addslN(size_t n, long addend[n])
{
Expand Down
2 changes: 1 addition & 1 deletion lib/agetpass.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ agetpass(const char *prompt)
}

char *
agetpass_stdin()
agetpass_stdin(void)
{
return agetpass_internal(NULL, RPP_STDIN);
}
Expand Down
3 changes: 1 addition & 2 deletions lib/audit_help.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,12 @@ void audit_help_open (void)
*
* type - type of message. A list of possible values is available in
* "audit-records.h" file.
* pgname - program's name
* op - operation. "adding user", "changing finger info", "deleting group"
* name - user's account or group name. If not available use NULL.
* id - uid or gid that the operation is being performed on. This is used
* only when user is NULL.
*/
void audit_logger (int type, MAYBE_UNUSED const char *pgname, const char *op,
void audit_logger (int type, const char *op,
const char *name, unsigned int id,
shadow_audit_result result)
{
Expand Down
22 changes: 12 additions & 10 deletions lib/cleanup_group.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ void cleanup_report_add_group (void *group_name)

SYSLOG ((LOG_ERR, "failed to add group %s", name));
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(),
audit_logger (AUDIT_ADD_GROUP,
"",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -45,7 +45,7 @@ void cleanup_report_del_group (void *group_name)

SYSLOG ((LOG_ERR, "failed to remove group %s", name));
#ifdef WITH_AUDIT
audit_logger (AUDIT_DEL_GROUP, log_get_progname(),
audit_logger (AUDIT_DEL_GROUP,
"",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -62,7 +62,7 @@ void cleanup_report_mod_group (void *cleanup_info)
gr_dbname (),
info->action));
#ifdef WITH_AUDIT
audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
audit_logger (AUDIT_GRP_MGMT,
info->audit_msg,
info->name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -80,7 +80,7 @@ void cleanup_report_mod_gshadow (void *cleanup_info)
sgr_dbname (),
info->action));
#ifdef WITH_AUDIT
audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
audit_logger (AUDIT_GRP_MGMT,
info->audit_msg,
info->name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -100,7 +100,7 @@ void cleanup_report_add_group_group (void *group_name)

SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ()));
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(),
audit_logger (AUDIT_ADD_GROUP,
"adding-group",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -120,7 +120,7 @@ void cleanup_report_add_group_gshadow (void *group_name)

SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ()));
#ifdef WITH_AUDIT
audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
audit_logger (AUDIT_GRP_MGMT,
"adding-shadow-group",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -143,7 +143,7 @@ void cleanup_report_del_group_group (void *group_name)
"failed to remove group %s from %s",
name, gr_dbname ()));
#ifdef WITH_AUDIT
audit_logger (AUDIT_DEL_GROUP, log_get_progname(),
audit_logger (AUDIT_DEL_GROUP,
"removing-group",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -166,7 +166,7 @@ void cleanup_report_del_group_gshadow (void *group_name)
"failed to remove group %s from %s",
name, sgr_dbname ()));
#ifdef WITH_AUDIT
audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
audit_logger (AUDIT_GRP_MGMT,
"removing-shadow-group",
name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
Expand All @@ -179,7 +179,8 @@ void cleanup_report_del_group_gshadow (void *group_name)
*
* It should be registered after the group file is successfully locked.
*/
void cleanup_unlock_group (MAYBE_UNUSED void *arg)
void
cleanup_unlock_group(void *)
{
if (gr_unlock () == 0) {
fprintf (log_get_logfd(),
Expand All @@ -199,7 +200,8 @@ void cleanup_unlock_group (MAYBE_UNUSED void *arg)
*
* It should be registered after the gshadow file is successfully locked.
*/
void cleanup_unlock_gshadow (MAYBE_UNUSED void *arg)
void
cleanup_unlock_gshadow(void *)
{
if (sgr_unlock () == 0) {
fprintf (log_get_logfd(),
Expand Down
Loading
Loading