On 20 Aug 2024, at 15:55, Mike Pattrick wrote:
> The Clang analyzer has trouble detecting that functions can never return
> null in certain conditions, this results in several false "Dereference of
> null pointer" detections.
>
> This patch annotates functions that call ovsdb_error_valist()
> unconditionally as non-null, as this function will either return a valid
> pointer or call abort().
>
> Signed-off-by: Mike Pattrick <[email protected]>
Other than the comment from Ilya, this patch looks good to me.
To be clear, I mean this change:
diff --git a/lib/ovsdb-error.h b/lib/ovsdb-error.h
index a63e92b15..e91b6336a 100644
--- a/lib/ovsdb-error.h
+++ b/lib/ovsdb-error.h
@@ -20,35 +20,35 @@
struct json;
-OVS_RETURNS_NONNULL
struct ovsdb_error *ovsdb_error(const char *tag, const char *details, ...)
OVS_PRINTF_FORMAT(2, 3)
- OVS_WARN_UNUSED_RESULT;
-OVS_RETURNS_NONNULL
+ OVS_WARN_UNUSED_RESULT
+ OVS_RETURNS_NONNULL;
struct ovsdb_error *ovsdb_io_error(int error, const char *details, ...)
OVS_PRINTF_FORMAT(2, 3)
- OVS_WARN_UNUSED_RESULT;
-OVS_RETURNS_NONNULL
+ OVS_WARN_UNUSED_RESULT
+ OVS_RETURNS_NONNULL;
struct ovsdb_error *ovsdb_syntax_error(const struct json *, const char *tag,
const char *details, ...)
OVS_PRINTF_FORMAT(3, 4)
- OVS_WARN_UNUSED_RESULT;
+ OVS_WARN_UNUSED_RESULT
+ OVS_RETURNS_NONNULL;
struct ovsdb_error *ovsdb_wrap_error(struct ovsdb_error *error,
const char *details, ...)
OVS_PRINTF_FORMAT(2, 3);
-OVS_RETURNS_NONNULL
struct ovsdb_error *ovsdb_internal_error(struct ovsdb_error *error,
const char *file, int line,
const char *details, ...)
OVS_PRINTF_FORMAT(4, 5)
- OVS_WARN_UNUSED_RESULT;
+ OVS_WARN_UNUSED_RESULT
+ OVS_RETURNS_NONNULL;
-OVS_RETURNS_NONNULL
struct ovsdb_error *ovsdb_perm_error(const char *details, ...)
OVS_PRINTF_FORMAT(1, 2)
- OVS_WARN_UNUSED_RESULT;
+ OVS_WARN_UNUSED_RESULT
+ OVS_RETURNS_NONNULL;
/* Returns a pointer to an ovsdb_error that represents an internal error for
* the current file name and line number with MSG as the associated message.
Acked-by: Eelco Chaudron <[email protected]>
> ---
> lib/ovsdb-error.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/lib/ovsdb-error.h b/lib/ovsdb-error.h
> index 77a60e074..a63e92b15 100644
> --- a/lib/ovsdb-error.h
> +++ b/lib/ovsdb-error.h
> @@ -20,12 +20,15 @@
>
> struct json;
>
> +OVS_RETURNS_NONNULL
> struct ovsdb_error *ovsdb_error(const char *tag, const char *details, ...)
> OVS_PRINTF_FORMAT(2, 3)
> OVS_WARN_UNUSED_RESULT;
> +OVS_RETURNS_NONNULL
> struct ovsdb_error *ovsdb_io_error(int error, const char *details, ...)
> OVS_PRINTF_FORMAT(2, 3)
> OVS_WARN_UNUSED_RESULT;
> +OVS_RETURNS_NONNULL
> struct ovsdb_error *ovsdb_syntax_error(const struct json *, const char *tag,
> const char *details, ...)
> OVS_PRINTF_FORMAT(3, 4)
> @@ -35,12 +38,14 @@ struct ovsdb_error *ovsdb_wrap_error(struct ovsdb_error
> *error,
> const char *details, ...)
> OVS_PRINTF_FORMAT(2, 3);
>
> +OVS_RETURNS_NONNULL
> struct ovsdb_error *ovsdb_internal_error(struct ovsdb_error *error,
> const char *file, int line,
> const char *details, ...)
> OVS_PRINTF_FORMAT(4, 5)
> OVS_WARN_UNUSED_RESULT;
>
> +OVS_RETURNS_NONNULL
> struct ovsdb_error *ovsdb_perm_error(const char *details, ...)
> OVS_PRINTF_FORMAT(1, 2)
> OVS_WARN_UNUSED_RESULT;
> --
> 2.43.5
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev