[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] 2.1.17 portability and core dump fixes
From: |
Mark Burgess |
Subject: |
Re: [PATCH] 2.1.17 portability and core dump fixes |
Date: |
Thu, 22 Dec 2005 20:42:12 +0100 |
Joe, Many thanks for these patches. I have applied them all.
On Wed, 2005-12-14 at 07:41 -0500, Joe Buehler wrote:
> Here are some patches to make 2.1.17 compile and run properly
> under various non-linux UNIX's (Solaris, HPUX, AIX). There
> are also a couple fixes for core dumps that happen under AIX.
>
> The maintainer(s) might do a grep for double semicolons (;;)
> in various places they don't need to be and get rid of them;
> there are a fair number and they cause compiler warnings.
> One place was considered an error by one of the compilers and
> is removed in the attached patch.
>
> You might also try valgrind on the code -- cfagent has a number
> of memory leaks. They sort of don't matter because the program is
> not a daemon, but still...
>
> In order:
>
> acl.c
>
> - prototype fix so it compiles
>
> cf.defs.h
>
> - elimination of illegal (in newer C standards) comma
>
> cf.extern.h
>
> - elimination of extraneous semicolon
>
> cfagent.c
>
> - null pointer deref fix
>
> cfetool.c
>
> - illegal use of computed value for array size
> - missing argument in printf() call
>
> cfservd.c
>
> - use of C++ comment syntax in C code
>
> edittools.c
>
> - use of == where = was intended (uninitialized variable)
> - illegal use of CURRENTITEM (it points to freed memory -- found
> via insure++)
>
> ifconf.c
>
> - INET_ADDRSTRLEN appears to be a linuxism
> plain text document attachment (temp.patch)
> --- ./src/acl.c.~1~ 2005-02-08 06:50:01.000000000 -0500
> +++ ./src/acl.c 2005-12-13 14:08:05.000000000 -0500
> @@ -1692,11 +1692,11 @@
>
>
> /*****************************************************************************/
>
> -int CheckNTACE(aces,method,filename,action)
> -struct CFACE *aces; /* List built up during parsing of config file */
> -char method; /* ACL operation method (o/a) */
> -char *filename; /* The filename */
> -enum fileactions action;/* The action to be performed */
> +int CheckNTACE(
> + struct CFACE *aces, /* List built up during parsing of config file
> */
> + char method, /* ACL operation method (o/a) */
> + char *filename, /* The filename */
> + enum fileactions action)/* The action to be performed */
> {
> #ifdef NT
> struct CFACE *ep;
> @@ -1718,12 +1718,12 @@
>
> /*************************** END NT Addition *******************************/
>
> -int CheckPosixACE(aces,method,filename,action)
> -struct CFACE *aces;
> -char method;
> -char *filename;
> -enum fileactions action;
> +int CheckPosixACE(
> + struct CFACE *aces,
> + char method,
> + char *filename,
> + enum fileactions action)
> {
> #if defined(HAVE_SYS_ACL_H) && defined(SOLARIS)
> struct CFACE *ep;
> --- ./src/cf.defs.h.~1~ 2005-10-09 11:53:26.000000000 -0400
> +++ ./src/cf.defs.h 2005-12-13 14:08:05.000000000 -0500
> @@ -1127,8 +1127,8 @@
> cfsys,
> cfpipe,
> cfalrm,
> - cfterm,
> + cfterm
> };
>
> #define highest_signal 64
> --- ./src/cf.extern.h.~1~ 2005-09-09 01:49:53.000000000 -0400
> +++ ./src/cf.extern.h 2005-12-13 14:08:05.000000000 -0500
> @@ -45,8 +45,8 @@
> extern int GOTMETHODARGS;
>
> extern struct Item *QUERYVARS;
> -extern struct Item *METHODRETURNVARS;;
> +extern struct Item *METHODRETURNVARS;
> extern struct Item *METHODRETURNCLASSES;
> extern char METHODFILENAME[CF_BUFSIZE];
> extern char *VMETHODPROTO[];
> --- ./src/cfagent.c.~1~ 2005-10-17 03:39:03.000000000 -0400
> +++ ./src/cfagent.c 2005-12-13 15:05:52.000000000 -0500
> @@ -1393,8 +1393,8 @@
> if (IsDefinedClass(ep->classes))
> {
> something_to_do = true;
> - Verbose("Defined Edit %s / %s\n",ep->data,ep->classes);
> + Verbose("Defined Edit %s /
> %s\n",ep->data?ep->data:"(null)",ep->classes);
> break;
> }
> }
> --- ./src/cfetool.c.~1~ 2005-10-09 07:39:22.000000000 -0400
> +++ ./src/cfetool.c 2005-12-13 14:08:05.000000000 -0500
> @@ -839,7 +839,7 @@
> time_t timestamp;
> char filename[CF_BUFSIZE];
> int cwdbufsize = CF_BUFSIZE - strlen(PATHNAME) - strlen(NAME);
> - char current_dir[cwdbufsize];
> + char current_dir[CF_BUFSIZE];
>
> AGE = WAGE = 0;
> ITER = 0;
> @@ -1255,8 +1255,8 @@
> break;
> }
>
> - Verbose("Dumping database: %s\n");
> + Verbose("Dumping database: %s\n", AVDB);
>
> if(OpenDatabase(false) != 0)
> exit(1);
> --- ./src/cfservd.c.~1~ 2005-10-18 14:59:16.000000000 -0400
> +++ ./src/cfservd.c 2005-12-13 14:08:05.000000000 -0500
> @@ -604,11 +604,11 @@
> FD_ZERO(&rset);
> FD_SET(sd,&rset);
>
> - timeout.tv_sec = 5; // Set a 5 second timeout for select
> + timeout.tv_sec = 5; /* Set a 5 second timeout for select */
> timeout.tv_usec = 0;
>
> ret_val = select((sd+1),&rset,NULL,NULL,&timeout);
> - if (ret_val == -1) // Error received from call to select
> + if (ret_val == -1) /* Error received from call to select */
> {
> if (errno == EINTR)
> {
> @@ -620,8 +620,8 @@
> exit(1);
> }
> }
> - else if (!ret_val) // No data waiting, we must have timed out!
> + else if (!ret_val) /* No data waiting, we must have timed out! */
> {
> continue;
> }
> --- ./src/edittools.c.~1~ 2005-10-09 11:53:26.000000000 -0400
> +++ ./src/edittools.c 2005-12-13 15:02:28.000000000 -0500
> @@ -759,7 +759,7 @@
>
> if (CURRENTLINEPTR == NULL)
> {
> - newlineptr == NULL;
> + newlineptr = NULL;
> }
> else
> {
> @@ -1470,12 +1470,13 @@
>
> while (!feof(pp))
> {
> - ReadLine(CURRENTITEM,CF_BUFSIZE,pp);
> + char buffer[CF_BUFSIZE];
> + ReadLine(buffer,CF_BUFSIZE,pp);
>
> if (!feof(pp))
> {
> - EditVerbose("%s\n",CURRENTITEM);
> + EditVerbose("%s\n",buffer);
> }
> }
>
> --- ./src/ifconf.c.~1~ 2005-10-09 16:21:13.000000000 -0400
> +++ ./src/ifconf.c 2005-12-13 14:08:05.000000000 -0500
> @@ -68,6 +68,10 @@
> #include "cf.defs.h"
> #include "cf.extern.h"
>
> +#ifndef INET_ADDRSTRLEN
> +#define INET_ADDRSTRLEN sizeof("255.255.255.255")
> +#endif
> +
> #if !defined(NT) && !defined(IRIX)
>
> /* IRIX makes the routing stuff obsolete unless we do this */
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@gnu.org
> http://lists.gnu.org/mailman/listinfo/help-cfengine