[Nut-upsdev] drivers/bcmxcp.c portability issue
Tim Rice
tim at multitalents.net
Wed Dec 16 01:40:33 UTC 2009
On Tue, 15 Dec 2009, Arjen de Korte wrote:
> Citeren Kjell Claesson <kjell.claesson at epost.tidanet.se>:
>
> > > Although gcc can handle it, it's not portable C code.
> > >
> > > What size should the answer array be?
> > >
> >
> > It depends on the ups.
>
> If the size of the answer isn't known at compile time, you should either
> allocate it dynamically with malloc() or calloc() (at runtime) or hardcode the
> size so big that any reply should fit in it.
This may be the least intrusive way to fix it.
------------------------------
--- nut-svn/drivers/bcmxcp.c.old 2009-12-15 09:32:45.000000000 -0800
+++ nut-svn/drivers/bcmxcp.c 2009-12-15 14:03:34.602495008 -0800
@@ -871,13 +871,14 @@
int init_outlet(unsigned char len)
{
- unsigned char answer[len];
+ unsigned char *answer;
int iIndex = 0, res, num;
int num_outlet, size_outlet;
int outlet_num, outlet_state;
short auto_dly_off, auto_dly_on;
char outlet_name[25];
+ answer = xmalloc((size_t) len);
res = command_read_sequence(PW_OUT_MON_BLOCK_REQ, answer);
if (res <= 0)
fatal_with_errno(EXIT_FAILURE, "Could not communicate with the ups");
------------------------------
--
Tim Rice Multitalents (707) 887-1469
tim at multitalents.net
More information about the Nut-upsdev
mailing list