On 4/15/23 17:21, James Raphael Tiovalen wrote:
> This commit adds null pointer checks in some code that performs some
> decisions based on old and new input ovsdb_rows. The corresponding
> non-null assertion and early return are added if both the old and the
> new ovsdb_rows are NULL.
> 
> Signed-off-by: James Raphael Tiovalen <[email protected]>
> ---
>  ovsdb/file.c    | 21 +++++++++++++++++----
>  ovsdb/monitor.c | 19 +++++++++++++++++--
>  2 files changed, 34 insertions(+), 6 deletions(-)
> 
> diff --git a/ovsdb/file.c b/ovsdb/file.c
> index 2d887e53e..498c73127 100644
> --- a/ovsdb/file.c
> +++ b/ovsdb/file.c
> @@ -522,9 +522,16 @@ ovsdb_file_txn_add_row(struct ovsdb_file_txn *ftxn,
>      }
>  
>      if (row) {
> -        struct ovsdb_table *table = new ? new->table : old->table;
> +        struct ovsdb_table *table = NULL;
> +        if (new) {
> +            table = new->table;
> +        } else if (old) {
> +            table = old->table;
> +        }
>          char uuid[UUID_LEN + 1];
>  
> +        ovs_assert(table);
> +

This should be just ovs_assert(new || old).

>          if (table != ftxn->table) {
>              /* Create JSON object for transaction overall. */
>              if (!ftxn->json) {
> @@ -538,9 +545,15 @@ ovsdb_file_txn_add_row(struct ovsdb_file_txn *ftxn,
>          }
>  
>          /* Add row to transaction for this table. */
> -        snprintf(uuid, sizeof uuid,
> -                 UUID_FMT, UUID_ARGS(ovsdb_row_get_uuid(new ? new : old)));
> -        json_object_put(ftxn->table_json, uuid, row);
> +        if (new) {
> +            snprintf(uuid, sizeof uuid,
> +                     UUID_FMT, UUID_ARGS(ovsdb_row_get_uuid(new)));
> +            json_object_put(ftxn->table_json, uuid, row);
> +        } else if (old) {
> +            snprintf(uuid, sizeof uuid,
> +                     UUID_FMT, UUID_ARGS(ovsdb_row_get_uuid(old)));
> +            json_object_put(ftxn->table_json, uuid, row);
> +        }

With ovs_assert(new || old) at the top we should not need this as well.

>      }
>  }
>  
> diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c
> index 4a0d6512f..34f5e041f 100644
> --- a/ovsdb/monitor.c
> +++ b/ovsdb/monitor.c
> @@ -1330,8 +1330,23 @@ ovsdb_monitor_changes_update(const struct ovsdb_row 
> *old,
>                               const struct ovsdb_monitor_table *mt,
>                               struct ovsdb_monitor_change_set_for_table *mcst)
>  {
> -    const struct uuid *uuid = ovsdb_row_get_uuid(new ? new : old);
> -    struct ovsdb_monitor_row *change;
> +    const struct uuid *uuid = NULL;
> +
> +    if (!new && !old) {
> +        return;
> +    } else {
> +        if (new) {
> +            uuid = ovsdb_row_get_uuid(new);
> +        } else if (old) {
> +            uuid = ovsdb_row_get_uuid(old);
> +        }
> +    }
> +
> +    if (!uuid) {
> +        return;
> +    }
> +
> +    struct ovsdb_monitor_row *change = NULL;

Same here.

>  
>      change = ovsdb_monitor_changes_row_find(mcst, uuid);
>      if (!change) {

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to