Re: [PATCH rtems] grlib: Fix snprintf() overflow warnings from gcc 12

2023-01-30 Thread Gedare Bloom
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

2023-01-27 Thread Joel Sherrill
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