Re: [PATCH rtems] grlib: Fix snprintf() overflow warnings from gcc 12
This is OK. Not ideal, but consistent with the current code at least. The commit message is a bit wrong since it also fixes sprintf() messages. We should probably replace the sprintf with snprintf especially where there is a string being used (prefix). The prefix is usually (always?) 32 byte array, so it shouldn't ever be a problem (the compiler will again complain). On Fri, Jan 27, 2023 at 4:56 PM Joel Sherrill wrote: > > Updates #4662. > --- > bsps/include/grlib/gpiolib.h | 2 +- > bsps/shared/grlib/1553/b1553brm.c | 2 +- > bsps/shared/grlib/1553/b1553rt.c | 2 +- > bsps/shared/grlib/analog/gradcdac.c| 2 +- > bsps/shared/grlib/can/grcan_internal.h | 2 +- > bsps/shared/grlib/can/occan.c | 2 +- > bsps/shared/grlib/gpio/grgpio.c| 4 ++-- > bsps/shared/grlib/i2c/i2cmst.c | 2 +- > bsps/shared/grlib/pwm/grpwm.c | 2 +- > bsps/shared/grlib/spi/spictrl.c| 2 +- > bsps/shared/grlib/spw/grspw.c | 2 +- > bsps/shared/grlib/tmtc/grtc.c | 2 +- > bsps/shared/grlib/tmtc/grtm.c | 2 +- > bsps/shared/grlib/uart/apbuart_cons.c | 2 +- > 14 files changed, 15 insertions(+), 15 deletions(-) > > diff --git a/bsps/include/grlib/gpiolib.h b/bsps/include/grlib/gpiolib.h > index 61f6fc9..c0f865f 100644 > --- a/bsps/include/grlib/gpiolib.h > +++ b/bsps/include/grlib/gpiolib.h > @@ -78,7 +78,7 @@ extern int gpiolib_irq_register(void *handle, void *func, > void *arg); > /*** Driver Interface ***/ > > struct gpiolib_info { > - chardevName[64]; > + chardevName[80]; > }; > > struct gpiolib_drv_ops { > diff --git a/bsps/shared/grlib/1553/b1553brm.c > b/bsps/shared/grlib/1553/b1553brm.c > index ee5f9fb..7e0b992 100644 > --- a/bsps/shared/grlib/1553/b1553brm.c > +++ b/bsps/shared/grlib/1553/b1553brm.c > @@ -119,7 +119,7 @@ struct irq_log_list { > typedef struct { > > struct drvmgr_dev *dev; /* Driver manager device */ > - char devName[32]; /* Device Name */ > + char devName[52]; /* Device Name */ > struct brm_reg *regs; > > unsigned int memarea_base; > diff --git a/bsps/shared/grlib/1553/b1553rt.c > b/bsps/shared/grlib/1553/b1553rt.c > index 43bbeaa..7a4e2535 100644 > --- a/bsps/shared/grlib/1553/b1553rt.c > +++ b/bsps/shared/grlib/1553/b1553rt.c > @@ -87,7 +87,7 @@ static rtems_driver_address_table b1553rt_driver = > RT_DRIVER_TABLE_ENTRY; > typedef struct { > > struct drvmgr_dev *dev; /* Driver manager device */ > -char devName[32]; /* Device Name */ > +char devName[52]; /* Device Name */ > > struct rt_reg *regs; > unsigned int ctrl_copy; /* Local copy of config register */ > diff --git a/bsps/shared/grlib/analog/gradcdac.c > b/bsps/shared/grlib/analog/gradcdac.c > index 3b1afa8..09f8760 100644 > --- a/bsps/shared/grlib/analog/gradcdac.c > +++ b/bsps/shared/grlib/analog/gradcdac.c > @@ -53,7 +53,7 @@ > struct gradcdac_priv { > struct gradcdac_regs *regs; /* Must be first */ > struct drvmgr_dev *dev; > - char devName[48]; > + char devName[54]; /* Must be at least 48 per names */ > > unsigned int freq; > int irqno; > diff --git a/bsps/shared/grlib/can/grcan_internal.h > b/bsps/shared/grlib/can/grcan_internal.h > index 16aabba..d27476a 100644 > --- a/bsps/shared/grlib/can/grcan_internal.h > +++ b/bsps/shared/grlib/can/grcan_internal.h > @@ -56,7 +56,7 @@ struct grcan_config { > > struct grcan_priv { > struct drvmgr_dev *dev; /* Driver manager device */ > - char devName[32]; /* Device Name */ > + char devName[52]; /* Device Name */ > unsigned int baseaddr, ram_base; > struct grcan_regs *regs; > int irq; > diff --git a/bsps/shared/grlib/can/occan.c b/bsps/shared/grlib/can/occan.c > index 51ffd07..a6b37ec 100644 > --- a/bsps/shared/grlib/can/occan.c > +++ b/bsps/shared/grlib/can/occan.c > @@ -226,7 +226,7 @@ typedef struct { > > typedef struct { > struct drvmgr_dev *dev; > - char devName[32]; > + char devName[52]; > SPIN_DECLARE(devlock); > > /* hardware shortcuts */ > diff --git a/bsps/shared/grlib/gpio/grgpio.c b/bsps/shared/grlib/gpio/grgpio.c > index d579432..711293d 100644 > --- a/bsps/shared/grlib/gpio/grgpio.c > +++ b/bsps/shared/grlib/gpio/grgpio.c > @@ -379,12 +379,12 @@ static int grgpio_gpiolib_get_info(void *handle, struct > gpiolib_info *pinfo) > /* Failed to get prefix, make sure of a unique FS name > * by using the driver minor. > */ > - snprintf(pinfo->devName, 64, "/dev/grgpio%d/%d", > dev->minor_drv, portnr); > + snprintf(pinfo->devName, 80, "/dev/grgpio%d/%d", > dev->minor_drv, portnr); > } else { > /* Got special prefix, this means we have a bus prefix > * And we should use our "bus minor" > */ > -
[PATCH rtems] grlib: Fix snprintf() overflow warnings from gcc 12
Updates #4662. --- bsps/include/grlib/gpiolib.h | 2 +- bsps/shared/grlib/1553/b1553brm.c | 2 +- bsps/shared/grlib/1553/b1553rt.c | 2 +- bsps/shared/grlib/analog/gradcdac.c| 2 +- bsps/shared/grlib/can/grcan_internal.h | 2 +- bsps/shared/grlib/can/occan.c | 2 +- bsps/shared/grlib/gpio/grgpio.c| 4 ++-- bsps/shared/grlib/i2c/i2cmst.c | 2 +- bsps/shared/grlib/pwm/grpwm.c | 2 +- bsps/shared/grlib/spi/spictrl.c| 2 +- bsps/shared/grlib/spw/grspw.c | 2 +- bsps/shared/grlib/tmtc/grtc.c | 2 +- bsps/shared/grlib/tmtc/grtm.c | 2 +- bsps/shared/grlib/uart/apbuart_cons.c | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/bsps/include/grlib/gpiolib.h b/bsps/include/grlib/gpiolib.h index 61f6fc9..c0f865f 100644 --- a/bsps/include/grlib/gpiolib.h +++ b/bsps/include/grlib/gpiolib.h @@ -78,7 +78,7 @@ extern int gpiolib_irq_register(void *handle, void *func, void *arg); /*** Driver Interface ***/ struct gpiolib_info { - chardevName[64]; + chardevName[80]; }; struct gpiolib_drv_ops { diff --git a/bsps/shared/grlib/1553/b1553brm.c b/bsps/shared/grlib/1553/b1553brm.c index ee5f9fb..7e0b992 100644 --- a/bsps/shared/grlib/1553/b1553brm.c +++ b/bsps/shared/grlib/1553/b1553brm.c @@ -119,7 +119,7 @@ struct irq_log_list { typedef struct { struct drvmgr_dev *dev; /* Driver manager device */ - char devName[32]; /* Device Name */ + char devName[52]; /* Device Name */ struct brm_reg *regs; unsigned int memarea_base; diff --git a/bsps/shared/grlib/1553/b1553rt.c b/bsps/shared/grlib/1553/b1553rt.c index 43bbeaa..7a4e2535 100644 --- a/bsps/shared/grlib/1553/b1553rt.c +++ b/bsps/shared/grlib/1553/b1553rt.c @@ -87,7 +87,7 @@ static rtems_driver_address_table b1553rt_driver = RT_DRIVER_TABLE_ENTRY; typedef struct { struct drvmgr_dev *dev; /* Driver manager device */ -char devName[32]; /* Device Name */ +char devName[52]; /* Device Name */ struct rt_reg *regs; unsigned int ctrl_copy; /* Local copy of config register */ diff --git a/bsps/shared/grlib/analog/gradcdac.c b/bsps/shared/grlib/analog/gradcdac.c index 3b1afa8..09f8760 100644 --- a/bsps/shared/grlib/analog/gradcdac.c +++ b/bsps/shared/grlib/analog/gradcdac.c @@ -53,7 +53,7 @@ struct gradcdac_priv { struct gradcdac_regs *regs; /* Must be first */ struct drvmgr_dev *dev; - char devName[48]; + char devName[54]; /* Must be at least 48 per names */ unsigned int freq; int irqno; diff --git a/bsps/shared/grlib/can/grcan_internal.h b/bsps/shared/grlib/can/grcan_internal.h index 16aabba..d27476a 100644 --- a/bsps/shared/grlib/can/grcan_internal.h +++ b/bsps/shared/grlib/can/grcan_internal.h @@ -56,7 +56,7 @@ struct grcan_config { struct grcan_priv { struct drvmgr_dev *dev; /* Driver manager device */ - char devName[32]; /* Device Name */ + char devName[52]; /* Device Name */ unsigned int baseaddr, ram_base; struct grcan_regs *regs; int irq; diff --git a/bsps/shared/grlib/can/occan.c b/bsps/shared/grlib/can/occan.c index 51ffd07..a6b37ec 100644 --- a/bsps/shared/grlib/can/occan.c +++ b/bsps/shared/grlib/can/occan.c @@ -226,7 +226,7 @@ typedef struct { typedef struct { struct drvmgr_dev *dev; - char devName[32]; + char devName[52]; SPIN_DECLARE(devlock); /* hardware shortcuts */ diff --git a/bsps/shared/grlib/gpio/grgpio.c b/bsps/shared/grlib/gpio/grgpio.c index d579432..711293d 100644 --- a/bsps/shared/grlib/gpio/grgpio.c +++ b/bsps/shared/grlib/gpio/grgpio.c @@ -379,12 +379,12 @@ static int grgpio_gpiolib_get_info(void *handle, struct gpiolib_info *pinfo) /* Failed to get prefix, make sure of a unique FS name * by using the driver minor. */ - snprintf(pinfo->devName, 64, "/dev/grgpio%d/%d", dev->minor_drv, portnr); + snprintf(pinfo->devName, 80, "/dev/grgpio%d/%d", dev->minor_drv, portnr); } else { /* Got special prefix, this means we have a bus prefix * And we should use our "bus minor" */ - snprintf(pinfo->devName, 64, "/dev/%sgrgpio%d/%d", prefix, dev->minor_bus, portnr); + snprintf(pinfo->devName, 80, "/dev/%sgrgpio%d/%d", prefix, dev->minor_bus, portnr); } return 0; diff --git a/bsps/shared/grlib/i2c/i2cmst.c b/bsps/shared/grlib/i2c/i2cmst.c index 68d4140..70c796b 100644 --- a/bsps/shared/grlib/i2c/i2cmst.c +++ b/bsps/shared/grlib/i2c/i2cmst.c @@ -375,7 +375,7 @@ int i2cmst_init3(struct drvmgr_dev *dev) { gr_i2cmst_prv_t *priv; char prefix[32]; - char devName[32]; + char devName[50]; int rc; priv = (gr_i2cmst_prv_t *)dev->priv; diff --git