Re: PATCH: fix uninitialized use of handle in struct policy_file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2008-03-04 at 12:38 -0500, Stephen Smalley wrote:
> On Tue, 2008-03-04 at 09:52 -0500, Stephen Smalley wrote:
> > On Tue, 2008-03-04 at 09:36 -0500, Todd C. Miller wrote:
> > > Joshua Brindle wrote:
> > > > I prefer it to memset or set the values to null explicitly, the
> > > > caller can then set the members it wants to.
> > > 
> > > How about this then?
> > > 
> > > Signed-off-by: Todd C. Miller <tmiller@xxxxxxxxxx>
> > 
> > Acked-by:  Stephen Smalley <sds@xxxxxxxxxxxxx>
> > 
> > Merge at will.
> 
> Likely should be applied on stable too.

I went ahead and merged it there w/ no problems.

> 
> > > 
> > >  checkpolicy/checkmodule.c                  |    2 ++
> > >  checkpolicy/checkpolicy.c                  |    2 ++
> > >  checkpolicy/test/dismod.c                  |    1 +
> > >  checkpolicy/test/dispol.c                  |    1 +
> > >  libsepol/include/sepol/policydb/policydb.h |    2 ++
> > >  libsepol/src/genbools.c                    |    2 ++
> > >  libsepol/src/module.c                      |    3 +--
> > >  libsepol/src/policydb.c                    |    5 +++++
> > >  libsepol/src/policydb_convert.c            |    4 ++--
> > >  libsepol/src/services.c                    |   15 +++++++++------
> > >  10 files changed, 27 insertions(+), 10 deletions(-)
> > > 
> > > Index: trunk/libsepol/include/sepol/policydb/policydb.h
> > > ===================================================================
> > > --- trunk/libsepol/include/sepol/policydb/policydb.h	(revision 2828)
> > > +++ trunk/libsepol/include/sepol/policydb/policydb.h	(working copy)
> > > @@ -568,6 +568,8 @@
> > >  	struct policy_file pf;
> > >  };
> > >  
> > > +extern void policy_file_init(policy_file_t * x);
> > > +
> > >  extern int policydb_read(policydb_t * p, struct policy_file *fp,
> > >  			 unsigned int verbose);
> > >  extern int avrule_read_list(policydb_t * p, avrule_t ** avrules,
> > > Index: trunk/libsepol/src/policydb.c
> > > ===================================================================
> > > --- trunk/libsepol/src/policydb.c	(revision 2828)
> > > +++ trunk/libsepol/src/policydb.c	(working copy)
> > > @@ -3290,3 +3290,8 @@
> > >  
> > >  	return 0;
> > >  }
> > > +
> > > +void policy_file_init(policy_file_t *pf)
> > > +{
> > > +	memset(pf, 0, sizeof(policy_file_t));
> > > +}
> > > Index: trunk/libsepol/src/services.c
> > > ===================================================================
> > > --- trunk/libsepol/src/services.c	(revision 2828)
> > > +++ trunk/libsepol/src/services.c	(working copy)
> > > @@ -85,6 +85,8 @@
> > >  int sepol_set_policydb_from_file(FILE * fp)
> > >  {
> > >  	struct policy_file pf;
> > > +
> > > +	policy_file_init(&pf);
> > >  	pf.fp = fp;
> > >  	pf.type = PF_USE_STDIO;
> > >  	if (mypolicydb.policy_type)
> > > @@ -1003,13 +1005,14 @@
> > >  	convert_context_args_t args;
> > >  	uint32_t seqno;
> > >  	int rc = 0;
> > > -	struct policy_file file = {
> > > -		.type = PF_USE_MEMORY,
> > > -		.data = data,
> > > -		.len = len,
> > > -		.fp = NULL
> > > -	}, *fp = &file;
> > > +	struct policy_file file, *fp;
> > >  
> > > +	policy_file_init(&file);
> > > +	file.type = PF_USE_MEMORY;
> > > +	file.data = data;
> > > +	file.len = len;
> > > +	fp = &file;
> > > +
> > >  	if (policydb_init(&newpolicydb))
> > >  		return -ENOMEM;
> > >  
> > > Index: trunk/libsepol/src/policydb_convert.c
> > > ===================================================================
> > > --- trunk/libsepol/src/policydb_convert.c	(revision 2828)
> > > +++ trunk/libsepol/src/policydb_convert.c	(working copy)
> > > @@ -13,6 +13,7 @@
> > >  
> > >  	policy_file_t pf;
> > >  
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_USE_MEMORY;
> > >  	pf.data = data;
> > >  	pf.len = len;
> > > @@ -39,9 +40,8 @@
> > >  	struct policydb tmp_policydb;
> > >  
> > >  	/* Compute the length for the new policy image. */
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_LEN;
> > > -	pf.data = NULL;
> > > -	pf.len = 0;
> > >  	pf.handle = handle;
> > >  	if (policydb_write(policydb, &pf)) {
> > >  		ERR(handle, "could not compute policy length");
> > > Index: trunk/libsepol/src/genbools.c
> > > ===================================================================
> > > --- trunk/libsepol/src/genbools.c	(revision 2828)
> > > +++ trunk/libsepol/src/genbools.c	(working copy)
> > > @@ -154,6 +154,7 @@
> > >  		goto err_destroy;
> > >  	}
> > >  
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_USE_MEMORY;
> > >  	pf.data = data;
> > >  	pf.len = len;
> > > @@ -225,6 +226,7 @@
> > >  		goto err_destroy;
> > >  	}
> > >  
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_USE_MEMORY;
> > >  	pf.data = data;
> > >  	pf.len = len;
> > > Index: trunk/libsepol/src/module.c
> > > ===================================================================
> > > --- trunk/libsepol/src/module.c	(revision 2828)
> > > +++ trunk/libsepol/src/module.c	(working copy)
> > > @@ -851,9 +851,8 @@
> > >  
> > >  	if (p->policy) {
> > >  		/* compute policy length */
> > > +		policy_file_init(&polfile);
> > >  		polfile.type = PF_LEN;
> > > -		polfile.data = NULL;
> > > -		polfile.len = 0;
> > >  		polfile.handle = file->handle;
> > >  		if (policydb_write(&p->policy->p, &polfile))
> > >  			return -1;
> > > Index: trunk/checkpolicy/test/dismod.c
> > > ===================================================================
> > > --- trunk/checkpolicy/test/dismod.c	(revision 2828)
> > > +++ trunk/checkpolicy/test/dismod.c	(working copy)
> > > @@ -689,6 +689,7 @@
> > >  			filename, strerror(errno));
> > >  		exit(1);
> > >  	}
> > > +	policy_file_init(&f);
> > >  	f.type = PF_USE_STDIO;
> > >  	f.fp = in_fp;
> > >  
> > > Index: trunk/checkpolicy/test/dispol.c
> > > ===================================================================
> > > --- trunk/checkpolicy/test/dispol.c	(revision 2828)
> > > +++ trunk/checkpolicy/test/dispol.c	(working copy)
> > > @@ -373,6 +373,7 @@
> > >  
> > >  	/* read the binary policy */
> > >  	fprintf(out_fp, "Reading policy...\n");
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_USE_MEMORY;
> > >  	pf.data = map;
> > >  	pf.len = sb.st_size;
> > > Index: trunk/checkpolicy/checkmodule.c
> > > ===================================================================
> > > --- trunk/checkpolicy/checkmodule.c	(revision 2829)
> > > +++ trunk/checkpolicy/checkmodule.c	(working copy)
> > > @@ -71,6 +71,7 @@
> > >  		fprintf(stderr, "Can't map '%s':  %s\n", file, strerror(errno));
> > >  		return -1;
> > >  	}
> > > +	policy_file_init(&f);
> > >  	f.type = PF_USE_MEMORY;
> > >  	f.data = map;
> > >  	f.len = sb.st_size;
> > > @@ -124,6 +125,7 @@
> > >  	p->policyvers = policyvers;
> > >  	p->handle_unknown = handle_unknown;
> > >  
> > > +	policy_file_init(&pf);
> > >  	pf.type = PF_USE_STDIO;
> > >  	pf.fp = outfp;
> > >  	ret = policydb_write(p, &pf);
> > > Index: trunk/checkpolicy/checkpolicy.c
> > > ===================================================================
> > > --- trunk/checkpolicy/checkpolicy.c	(revision 2829)
> > > +++ trunk/checkpolicy/checkpolicy.c	(working copy)
> > > @@ -489,6 +489,7 @@
> > >  				file, strerror(errno));
> > >  			exit(1);
> > >  		}
> > > +		policy_file_init(&pf);
> > >  		pf.type = PF_USE_MEMORY;
> > >  		pf.data = map;
> > >  		pf.len = sb.st_size;
> > > @@ -577,6 +578,7 @@
> > >  		policydb.policy_type = POLICY_KERN;
> > >  		policydb.policyvers = policyvers;
> > >  
> > > +		policy_file_init(&pf);
> > >  		pf.type = PF_USE_STDIO;
> > >  		pf.fp = outfp;
> > >  		ret = policydb_write(&policydb, &pf);
> > > 
> > > --
> > > This message was distributed to subscribers of the selinux mailing list.
> > > If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
> > > the words "unsubscribe selinux" without quotes as the message.
-- 
Stephen Smalley
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux