Message ID | 20210222121030.2109-1-roid@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | [iproute2-next,v2] dcb: Fix compilation warning about reallocarray | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
Roi Dayan <roid@nvidia.com> writes: > --- a/dcb/dcb_app.c > +++ b/dcb/dcb_app.c > @@ -65,8 +65,7 @@ static void dcb_app_table_fini(struct dcb_app_table *tab) > > static int dcb_app_table_push(struct dcb_app_table *tab, struct dcb_app *app) > { > - struct dcb_app *apps = reallocarray(tab->apps, tab->n_apps + 1, > - sizeof(*tab->apps)); > + struct dcb_app *apps = realloc(tab->apps, (tab->n_apps + 1) * sizeof(*tab->apps)); reallocarray() checks that count*size does not overflow. But the whole APP table needs to fit into one attribute, which limits the size to some 64K, so from UAPI direction this will never overflow. From the command-line direction, size of 'struct app' is 4 bytes, so to overflow you'd need to stuff in 1G APP entries. I think we don't need to worry about that. So this looks good. Reviewed-by: Petr Machata <petrm@nvidia.com>
Petr Machata <petrm@nvidia.com> writes: > Roi Dayan <roid@nvidia.com> writes: > >> --- a/dcb/dcb_app.c >> +++ b/dcb/dcb_app.c >> @@ -65,8 +65,7 @@ static void dcb_app_table_fini(struct dcb_app_table *tab) >> >> static int dcb_app_table_push(struct dcb_app_table *tab, struct dcb_app *app) >> { >> - struct dcb_app *apps = reallocarray(tab->apps, tab->n_apps + 1, >> - sizeof(*tab->apps)); >> + struct dcb_app *apps = realloc(tab->apps, (tab->n_apps + 1) * sizeof(*tab->apps)); > > Reviewed-by: Petr Machata <petrm@nvidia.com> Could this be merged, please?
On 3/15/21 7:10 AM, Petr Machata wrote:
> Could this be merged, please?
done
diff --git a/dcb/dcb_app.c b/dcb/dcb_app.c index 7ce80f85072b..c4816bc2997f 100644 --- a/dcb/dcb_app.c +++ b/dcb/dcb_app.c @@ -65,8 +65,7 @@ static void dcb_app_table_fini(struct dcb_app_table *tab) static int dcb_app_table_push(struct dcb_app_table *tab, struct dcb_app *app) { - struct dcb_app *apps = reallocarray(tab->apps, tab->n_apps + 1, - sizeof(*tab->apps)); + struct dcb_app *apps = realloc(tab->apps, (tab->n_apps + 1) * sizeof(*tab->apps)); if (apps == NULL) { perror("Cannot allocate APP table");
In older distros we need bsd/stdlib.h but newer distro doesn't need it. Also old distro will need libbsd-devel installed and newer doesn't. To remove a possible dependency on libbsd-devel replace usage of reallocarray to realloc. dcb_app.c: In function ‘dcb_app_table_push’: dcb_app.c:68:25: warning: implicit declaration of function ‘reallocarray’; did you mean ‘realloc’? Fixes: 8e9bed1493f5 ("dcb: Add a subtool for the DCB APP object") Signed-off-by: Roi Dayan <roid@nvidia.com> --- Notes: v2 - tag for iproute next - replace reallocarray with realloc instead of messing with libbsd dcb/dcb_app.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)