You can subscribe to this list here.
| 2006 | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug (24) | Sep (38) | Oct (29) | Nov (40) | Dec (4) | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 | Jan (88) | Feb (66) | Mar (44) | Apr (104) | May (35) | Jun (34) | Jul (12) | Aug (42) | Sep (84) | Oct (34) | Nov (30) | Dec (22) | 
| 2008 | Jan (60) | Feb (54) | Mar (32) | Apr (14) | May (16) | Jun (26) | Jul (22) | Aug (12) | Sep | Oct | Nov | Dec | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 18:20:36
      
     | 
| Revision: 2625
          http://selinux.svn.sourceforge.net/selinux/?rev=2625&view=rev
Author:   ssmalley
Date:     2007-09-28 11:20:26 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Author: "Todd C. Miller"
Email: tm...@tr...
Subject: libsemanage: genhomedircon regressions
Date: Fri, 28 Sep 2007 14:04:12 -0400
Daniel J Walsh wrote:
> Yes you are right.
>
> The problem is we need to find the failsafe account before writing the
> general account.
> 
> How about this patch.
There is some missing frees in there and I don't think we really
need to get the full users list.  I would write it like this.
 - todd
Modified Paths:
--------------
    trunk/libsemanage/src/genhomedircon.c
Modified: trunk/libsemanage/src/genhomedircon.c
===================================================================
--- trunk/libsemanage/src/genhomedircon.c	2007-09-28 13:43:19 UTC (rev 2624)
+++ trunk/libsemanage/src/genhomedircon.c	2007-09-28 18:20:26 UTC (rev 2625)
@@ -575,6 +575,57 @@
 	return STATUS_SUCCESS;
 }
 
+static int setup_fallback_user(genhomedircon_settings_t * s)
+{
+	semanage_seuser_t **seuser_list = NULL;
+	unsigned int nseusers = 0;
+	semanage_user_key_t *key = NULL;
+	semanage_user_t *u = NULL;
+	const char *name = NULL;
+	const char *seuname = NULL;
+	const char *prefix = NULL;
+	unsigned int i;
+	int retval;
+	int errors = 0;
+
+	retval = semanage_seuser_list(s->h_semanage, &seuser_list, &nseusers);
+	if (retval < 0 || (nseusers < 1)) {
+		/* if there are no users, this function can't do any other work */
+		return errors;
+	}
+
+	for (i = 0; i < nseusers; i++) {
+		name = semanage_seuser_get_name(seuser_list[i]);
+		if (strcmp(name, DEFAULT_LOGIN) == 0) {
+			seuname = semanage_seuser_get_sename(seuser_list[i]);
+
+			/* find the user structure given the name */
+			if (semanage_user_key_create(s->h_semanage, seuname,
+						     &key) < 0) {
+				errors = STATUS_ERR;
+				break;
+			}
+			if (semanage_user_query(s->h_semanage, key, &u) < 0)
+				prefix = name;
+			else
+				prefix = semanage_user_get_prefix(u);
+
+			if (set_fallback_user(s, seuname, prefix) != 0)
+				errors = STATUS_ERR;
+			semanage_user_key_free(key);
+			if (u)
+				semanage_user_free(u);
+			break;
+		}
+	}
+
+	for (i = 0; i < nseusers; i++)
+		semanage_seuser_free(seuser_list[i]);
+	free(seuser_list);
+
+	return errors;
+}
+
 static genhomedircon_user_entry_t *get_users(genhomedircon_settings_t * s,
 					     int *errors)
 {
@@ -616,30 +667,6 @@
 		goto cleanup;
 
 	for (i = 0; i < nseusers; i++) {
-		name = semanage_seuser_get_name(seuser_list[i]);
-		if (strcmp(name, DEFAULT_LOGIN) == 0) {
-			seuname = semanage_seuser_get_sename(seuser_list[i]);
-
-			/* find the user structure given the name */
-			u = bsearch(seuname, user_list, nusers,
-				    sizeof(semanage_user_t *),
-				    (int (*)(const void *, const void *))
-				    &name_user_cmp);
-			if (u) {
-				prefix = semanage_user_get_prefix(*u);
-			} else {
-				prefix = name;
-			}
-
-			if (set_fallback_user(s, seuname, prefix) != 0) {
-				*errors = STATUS_ERR;
-				goto cleanup;
-			}
-			break;
-		}
-	}
-
-	for (i = 0; i < nseusers; i++) {
 		seuname = semanage_seuser_get_sename(seuser_list[i]);
 
 		if (strcmp(seuname, s->fallback_user) == 0)
@@ -769,12 +796,10 @@
 		goto done;
 	}
 
-	if (write_gen_home_dir_context(s, out, user_context_tpl,
-				       homedir_context_tpl) != STATUS_SUCCESS) {
+	if (setup_fallback_user(s) != 0) {
 		retval = STATUS_ERR;
 		goto done;
 	}
-
 	for (h = homedirs; h; h = h->next) {
 		Ustr *temp = ustr_dup_cstr(h->data);
 
@@ -811,6 +836,11 @@
 		goto done;
 	}
 
+	if (write_gen_home_dir_context(s, out, user_context_tpl,
+				       homedir_context_tpl) != STATUS_SUCCESS) {
+		retval = STATUS_ERR;
+	}
+
       done:
 	/* Cleanup */
 	semanage_list_destroy(&homedirs);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:43:21
      
     | 
| Revision: 2624
          http://selinux.svn.sourceforge.net/selinux/?rev=2624&view=rev
Author:   ssmalley
Date:     2007-09-28 06:43:19 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
updated libsemanage to version 2.0.10
Modified Paths:
--------------
    trunk/libsemanage/ChangeLog
    trunk/libsemanage/VERSION
Modified: trunk/libsemanage/ChangeLog
===================================================================
--- trunk/libsemanage/ChangeLog	2007-09-28 13:40:53 UTC (rev 2623)
+++ trunk/libsemanage/ChangeLog	2007-09-28 13:43:19 UTC (rev 2624)
@@ -1,3 +1,9 @@
+2.0.10 2007-09-28
+	* Fix error checking on getpw*_r functions from Todd Miller.
+	* Make genhomedircon skip invalid homedir contexts from Todd Miller.
+	* Set default user and prefix from seusers from Dan Walsh.
+	* Add swigify Makefile target from Dan Walsh.
+
 2.0.9 2007-09-24
 	* Pass CFLAGS to CC even on link command, per Dennis Gilmore.
 
Modified: trunk/libsemanage/VERSION
===================================================================
--- trunk/libsemanage/VERSION	2007-09-28 13:40:53 UTC (rev 2623)
+++ trunk/libsemanage/VERSION	2007-09-28 13:43:19 UTC (rev 2624)
@@ -1 +1 @@
-2.0.9
+2.0.10
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:40:54
      
     | 
| Revision: 2623
          http://selinux.svn.sourceforge.net/selinux/?rev=2623&view=rev
Author:   ssmalley
Date:     2007-09-28 06:40:53 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Add swigify target to libsemanage Makefile.
Modified Paths:
--------------
    trunk/libsemanage/Makefile
Modified: trunk/libsemanage/Makefile
===================================================================
--- trunk/libsemanage/Makefile	2007-09-28 13:39:50 UTC (rev 2622)
+++ trunk/libsemanage/Makefile	2007-09-28 13:40:53 UTC (rev 2623)
@@ -1,6 +1,9 @@
 all: 
 	$(MAKE) -C src all
 
+swigify:
+	$(MAKE) -C src swigify
+
 pywrap: 
 	$(MAKE) -C src pywrap
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:39:52
      
     | 
| Revision: 2622
          http://selinux.svn.sourceforge.net/selinux/?rev=2622&view=rev
Author:   ssmalley
Date:     2007-09-28 06:39:50 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Author: "Todd C. Miller"
Email: tm...@tr...
Subject: libsemanage: validate homedir contexts
Date: Thu, 27 Sep 2007 16:07:13 -0400
Validate contexts against the new policy before writing them to
file_contexts.homedirs.
Author: "Todd C. Miller"
Email: tm...@tr...
Subject: libsemanage: update default user
Date: Thu, 27 Sep 2007 16:07:15 -0400
Patch from dwalsh to update the default user and prefix based on the
seusers file.  Previously it just assumed user_u and user.
Modified Paths:
--------------
    trunk/libsemanage/src/direct_api.c
    trunk/libsemanage/src/genhomedircon.c
    trunk/libsemanage/src/genhomedircon.h
    trunk/libsemanage/src/semanage_store.c
    trunk/libsemanage/src/semanage_store.h
Modified: trunk/libsemanage/src/direct_api.c
===================================================================
--- trunk/libsemanage/src/direct_api.c	2007-09-28 13:38:20 UTC (rev 2621)
+++ trunk/libsemanage/src/direct_api.c	2007-09-28 13:39:50 UTC (rev 2622)
@@ -702,7 +702,7 @@
 		goto cleanup;
 
 	if (sh->do_rebuild || modified) {
-		retval = semanage_install_sandbox(sh);
+		retval = semanage_install_sandbox(sh, out);
 	}
 
       cleanup:
Modified: trunk/libsemanage/src/genhomedircon.c
===================================================================
--- trunk/libsemanage/src/genhomedircon.c	2007-09-28 13:38:20 UTC (rev 2621)
+++ trunk/libsemanage/src/genhomedircon.c	2007-09-28 13:39:50 UTC (rev 2622)
@@ -1,5 +1,6 @@
-/* Author: Mark Goldman   <mgo...@tr...>
- * 			Paul Rosenfeld	<pro...@tr...>
+/* Author: Mark Goldman	  <mgo...@tr...>
+ * 	   Paul Rosenfeld <pro...@tr...>
+ * 	   Todd C. Miller <tm...@tr...>
  *
  * Copyright (C) 2007 Tresys Technology, LLC
  *
@@ -23,6 +24,8 @@
 #include <semanage/seusers_policy.h>
 #include <semanage/users_policy.h>
 #include <semanage/user_record.h>
+#include <sepol/context.h>
+#include <sepol/context_record.h>
 #include "semanage_store.h"
 #include "seuser_internal.h"
 #include "debug.h"
@@ -79,7 +82,10 @@
 	const char *fcfilepath;
 	int usepasswd;
 	const char *homedir_template_path;
+	char *fallback_user;
+	char *fallback_user_prefix;
 	semanage_handle_t *h_semanage;
+	sepol_policydb_t *policydb;
 } genhomedircon_settings_t;
 
 typedef struct user_entry {
@@ -353,10 +359,50 @@
 	return retval;
 }
 
-static int write_home_dir_context(FILE * out, semanage_list_t * tpl,
-				  const char *user, const char *seuser,
-				  const char *home, const char *role_prefix)
+static const char * extract_context(Ustr *line)
 {
+	const char whitespace[] = " \t\n";
+	size_t off, len;
+
+	/* check for trailing whitespace */
+	off = ustr_spn_chrs_rev(line, 0, whitespace, strlen(whitespace));
+
+	/* find the length of the last field in line */
+	len = ustr_cspn_chrs_rev(line, off, whitespace, strlen(whitespace));
+
+	if (len == 0)
+		return NULL;
+	return ustr_cstr(line) + ustr_len(line) - (len + off);
+}
+
+static int check_line(genhomedircon_settings_t * s, Ustr *line)
+{
+	sepol_context_t *ctx_record = NULL;
+	const char *ctx_str;
+	int result;
+
+	ctx_str = extract_context(line);
+	if (!ctx_str)
+		return STATUS_ERR;
+
+	result = sepol_context_from_string(s->h_semanage->sepolh,
+					   ctx_str, &ctx_record);
+	if (result == STATUS_SUCCESS && ctx_record != NULL) {
+		sepol_msg_set_callback(s->h_semanage->sepolh, NULL, NULL);
+		result = sepol_context_check(s->h_semanage->sepolh,
+					     s->policydb, ctx_record);
+		sepol_msg_set_callback(s->h_semanage->sepolh,
+				       semanage_msg_relay_handler, s->h_semanage);
+		sepol_context_free(ctx_record);
+	}
+	return result;
+}
+
+static int write_home_dir_context(genhomedircon_settings_t * s, FILE * out,
+				  semanage_list_t * tpl, const char *user,
+				  const char *seuser, const char *home,
+				  const char *role_prefix)
+{
 	replacement_pair_t repl[] = {
 		{.search_for = TEMPLATE_SEUSER,.replace_with = seuser},
 		{.search_for = TEMPLATE_HOME_DIR,.replace_with = home},
@@ -370,8 +416,12 @@
 
 	for (; tpl; tpl = tpl->next) {
 		line = replace_all(tpl->data, repl);
-		if (!line || !ustr_io_putfileline(&line, out))
+		if (!line)
 			goto fail;
+		if (check_line(s, line) == STATUS_SUCCESS) {
+			if (!ustr_io_putfileline(&line, out))
+				goto fail;
+		}
 		ustr_sc_free(&line);
 	}
 	return STATUS_SUCCESS;
@@ -381,8 +431,8 @@
 	return STATUS_ERR;
 }
 
-static int write_home_root_context(FILE * out, semanage_list_t * tpl,
-				   char *homedir)
+static int write_home_root_context(genhomedircon_settings_t * s, FILE * out,
+				   semanage_list_t * tpl, char *homedir)
 {
 	replacement_pair_t repl[] = {
 		{.search_for = TEMPLATE_HOME_ROOT,.replace_with = homedir},
@@ -392,8 +442,12 @@
 
 	for (; tpl; tpl = tpl->next) {
 		line = replace_all(tpl->data, repl);
-		if (!line || !ustr_io_putfileline(&line, out))
+		if (!line)
 			goto fail;
+		if (check_line(s, line) == STATUS_SUCCESS) {
+			if (!ustr_io_putfileline(&line, out))
+				goto fail;
+		}
 		ustr_sc_free(&line);
 	}
 	return STATUS_SUCCESS;
@@ -403,8 +457,9 @@
 	return STATUS_ERR;
 }
 
-static int write_user_context(FILE * out, semanage_list_t * tpl, char *user,
-			      char *seuser, char *role_prefix)
+static int write_user_context(genhomedircon_settings_t * s, FILE * out,
+			      semanage_list_t * tpl, const char *user,
+			      const char *seuser, const char *role_prefix)
 {
 	replacement_pair_t repl[] = {
 		{.search_for = TEMPLATE_USER,.replace_with = user},
@@ -416,8 +471,12 @@
 
 	for (; tpl; tpl = tpl->next) {
 		line = replace_all(tpl->data, repl);
-		if (!line || !ustr_io_putfileline(&line, out))
+		if (!line)
 			goto fail;
+		if (check_line(s, line) == STATUS_SUCCESS) {
+			if (!ustr_io_putfileline(&line, out))
+				goto fail;
+		}
 		ustr_sc_free(&line);
 	}
 	return STATUS_SUCCESS;
@@ -497,6 +556,25 @@
 	free(temp);
 }
 
+static int set_fallback_user(genhomedircon_settings_t *s,
+			     const char *user, const char *prefix)
+{
+	char *fallback_user = strdup(user);
+	char *fallback_user_prefix = strdup(prefix);
+
+	if (fallback_user == NULL || fallback_user_prefix == NULL) {
+		free(fallback_user);
+		free(fallback_user_prefix);
+		return STATUS_ERR;
+	}
+
+	free(s->fallback_user);
+	free(s->fallback_user_prefix);
+	s->fallback_user = fallback_user;
+	s->fallback_user_prefix = fallback_user_prefix;
+	return STATUS_SUCCESS;
+}
+
 static genhomedircon_user_entry_t *get_users(genhomedircon_settings_t * s,
 					     int *errors)
 {
@@ -539,13 +617,40 @@
 
 	for (i = 0; i < nseusers; i++) {
 		name = semanage_seuser_get_name(seuser_list[i]);
+		if (strcmp(name, DEFAULT_LOGIN) == 0) {
+			seuname = semanage_seuser_get_sename(seuser_list[i]);
+
+			/* find the user structure given the name */
+			u = bsearch(seuname, user_list, nusers,
+				    sizeof(semanage_user_t *),
+				    (int (*)(const void *, const void *))
+				    &name_user_cmp);
+			if (u) {
+				prefix = semanage_user_get_prefix(*u);
+			} else {
+				prefix = name;
+			}
+
+			if (set_fallback_user(s, seuname, prefix) != 0) {
+				*errors = STATUS_ERR;
+				goto cleanup;
+			}
+			break;
+		}
+	}
+
+	for (i = 0; i < nseusers; i++) {
 		seuname = semanage_seuser_get_sename(seuser_list[i]);
 
-		if (strcmp(seuname, FALLBACK_USER) == 0)
+		if (strcmp(seuname, s->fallback_user) == 0)
 			continue;
-		if (strcmp(seuname, DEFAULT_LOGIN) == 0)
+
+		name = semanage_seuser_get_name(seuser_list[i]);
+
+		if (strcmp(name, DEFAULT_LOGIN) == 0)
 			continue;
-		if (strcmp(seuname, TEMPLATE_SEUSER) == 0)
+
+		if (strcmp(name, TEMPLATE_SEUSER) == 0)
 			continue;
 
 		/* find the user structure given the name */
@@ -604,7 +709,7 @@
 	return head;
 }
 
-static int write_gen_home_dir_context(FILE * out, genhomedircon_settings_t * s,
+static int write_gen_home_dir_context(genhomedircon_settings_t * s, FILE * out,
 				      semanage_list_t * user_context_tpl,
 				      semanage_list_t * homedir_context_tpl)
 {
@@ -617,13 +722,13 @@
 	}
 
 	for (; users; pop_user_entry(&users)) {
-		if (write_home_dir_context(out, homedir_context_tpl,
+		if (write_home_dir_context(s, out, homedir_context_tpl,
 					   users->name,
 					   users->sename, users->home,
 					   users->prefix)) {
 			return STATUS_ERR;
 		}
-		if (write_user_context(out, user_context_tpl, users->name,
+		if (write_user_context(s, out, user_context_tpl, users->name,
 				       users->sename, users->prefix)) {
 			return STATUS_ERR;
 		}
@@ -664,6 +769,12 @@
 		goto done;
 	}
 
+	if (write_gen_home_dir_context(s, out, user_context_tpl,
+				       homedir_context_tpl) != STATUS_SUCCESS) {
+		retval = STATUS_ERR;
+		goto done;
+	}
+
 	for (h = homedirs; h; h = h->next) {
 		Ustr *temp = ustr_dup_cstr(h->data);
 
@@ -673,16 +784,17 @@
 			goto done;
 		}
 
-		if (write_home_dir_context(out,
-					   homedir_context_tpl, FALLBACK_USER,
-					   FALLBACK_USER, ustr_cstr(temp),
-					   FALLBACK_USER_PREFIX) !=
+		if (write_home_dir_context(s, out,
+					   homedir_context_tpl,
+					   s->fallback_user, s->fallback_user,
+					   ustr_cstr(temp),
+					   s->fallback_user_prefix) !=
 		    STATUS_SUCCESS) {
 			ustr_sc_free(&temp);
 			retval = STATUS_ERR;
 			goto done;
 		}
-		if (write_home_root_context(out,
+		if (write_home_root_context(s, out,
 					    homeroot_context_tpl,
 					    h->data) != STATUS_SUCCESS) {
 			ustr_sc_free(&temp);
@@ -692,16 +804,12 @@
 
 		ustr_sc_free(&temp);
 	}
-	if (write_user_context(out, user_context_tpl,
-			       ".*", FALLBACK_USER,
-			       FALLBACK_USER_PREFIX) != STATUS_SUCCESS) {
+	if (write_user_context(s, out, user_context_tpl,
+			       ".*", s->fallback_user,
+			       s->fallback_user_prefix) != STATUS_SUCCESS) {
 		retval = STATUS_ERR;
 		goto done;
 	}
-	if (write_gen_home_dir_context(out, s, user_context_tpl,
-				       homedir_context_tpl) != STATUS_SUCCESS) {
-		retval = STATUS_ERR;
-	}
 
       done:
 	/* Cleanup */
@@ -713,7 +821,9 @@
 	return retval;
 }
 
-int semanage_genhomedircon(semanage_handle_t * sh, int usepasswd)
+int semanage_genhomedircon(semanage_handle_t * sh,
+			   sepol_policydb_t * policydb,
+			   int usepasswd)
 {
 	genhomedircon_settings_t s;
 	FILE *out = NULL;
@@ -725,8 +835,14 @@
 	    semanage_path(SEMANAGE_TMP, SEMANAGE_HOMEDIR_TMPL);
 	s.fcfilepath = semanage_path(SEMANAGE_TMP, SEMANAGE_FC_HOMEDIRS);
 
+	s.fallback_user = strdup(FALLBACK_USER);
+	s.fallback_user_prefix = strdup(FALLBACK_USER_PREFIX);
+	if (s.fallback_user == NULL || s.fallback_user_prefix == NULL)
+		return STATUS_ERR;
+
 	s.usepasswd = usepasswd;
 	s.h_semanage = sh;
+	s.policydb = policydb;
 
 	if (!(out = fopen(s.fcfilepath, "w"))) {
 		/* couldn't open output file */
@@ -737,5 +853,9 @@
 	retval = write_context_file(&s, out);
 
 	fclose(out);
+
+	free(s.fallback_user);
+	free(s.fallback_user_prefix);
+
 	return retval;
 }
Modified: trunk/libsemanage/src/genhomedircon.h
===================================================================
--- trunk/libsemanage/src/genhomedircon.h	2007-09-28 13:38:20 UTC (rev 2621)
+++ trunk/libsemanage/src/genhomedircon.h	2007-09-28 13:39:50 UTC (rev 2622)
@@ -22,6 +22,7 @@
 
 #include "utilities.h"
 
-int semanage_genhomedircon(semanage_handle_t * sh, int usepasswd);
+int semanage_genhomedircon(semanage_handle_t * sh,
+			   sepol_policydb_t * policydb, int usepasswd);
 
 #endif
Modified: trunk/libsemanage/src/semanage_store.c
===================================================================
--- trunk/libsemanage/src/semanage_store.c	2007-09-28 13:38:20 UTC (rev 2621)
+++ trunk/libsemanage/src/semanage_store.c	2007-09-28 13:39:50 UTC (rev 2622)
@@ -1279,7 +1279,8 @@
  * should be placed within a mutex lock to ensure that it runs
  * atomically.	Returns commit number on success, -1 on error.
  */
-int semanage_install_sandbox(semanage_handle_t * sh)
+int semanage_install_sandbox(semanage_handle_t * sh,
+			     sepol_policydb_t * policydb)
 {
 	int retval = -1, commit_num = -1;
 
@@ -1294,7 +1295,7 @@
 	}
 	if (!sh->conf->disable_genhomedircon) {
 		if ((retval =
-		     semanage_genhomedircon(sh, TRUE)) != 0) {
+		     semanage_genhomedircon(sh, policydb, TRUE)) != 0) {
 			ERR(sh, "semanage_genhomedircon returned error code %d.",
 			    retval);
 			goto cleanup;
Modified: trunk/libsemanage/src/semanage_store.h
===================================================================
--- trunk/libsemanage/src/semanage_store.h	2007-09-28 13:38:20 UTC (rev 2621)
+++ trunk/libsemanage/src/semanage_store.h	2007-09-28 13:39:50 UTC (rev 2622)
@@ -83,8 +83,6 @@
 int semanage_get_modules_names(semanage_handle_t * sh,
 			       char ***filenames, int *len);
 
-int semanage_install_sandbox(semanage_handle_t * sh);
-
 /* lock file routines */
 int semanage_get_trans_lock(semanage_handle_t * sh);
 int semanage_get_active_lock(semanage_handle_t * sh);
@@ -102,7 +100,8 @@
 int semanage_write_policydb(semanage_handle_t * sh,
 			    sepol_policydb_t * policydb);
 
-int semanage_install_sandbox(semanage_handle_t * sh);
+int semanage_install_sandbox(semanage_handle_t * sh,
+			     sepol_policydb_t * policydb);
 
 int semanage_verify_modules(semanage_handle_t * sh,
 			    char **module_filenames, int num_modules);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:38:21
      
     | 
| Revision: 2621
          http://selinux.svn.sourceforge.net/selinux/?rev=2621&view=rev
Author:   ssmalley
Date:     2007-09-28 06:38:20 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Author: "Todd C. Miller"
Email: tm...@tr...
Subject: libsemanage: fix getpw*_r usage
Date: Thu, 27 Sep 2007 16:07:14 -0400
getpwnam_r() returns 0 when a user doesn't exist and just zeroes the
struct passwd pointer.  However, getpwent_r() returns ENOENT when there
are no more users.  This diff deals with both possible behaviors so that
if the two functions are brought in line nothing will break.  We can
also remove the errno check and use the return value directly.
Acked-by: Stephen Smalley <sd...@ty...>
Modified Paths:
--------------
    trunk/libsemanage/src/genhomedircon.c
Modified: trunk/libsemanage/src/genhomedircon.c
===================================================================
--- trunk/libsemanage/src/genhomedircon.c	2007-09-28 13:02:44 UTC (rev 2620)
+++ trunk/libsemanage/src/genhomedircon.c	2007-09-28 13:38:20 UTC (rev 2621)
@@ -154,6 +154,7 @@
 	size_t temp;
 	struct passwd pwstorage, *pwbuf;
 	struct stat buf;
+	int retval;
 
 	shells = get_shell_list();
 	assert(shells);
@@ -225,7 +226,7 @@
 	if (rbuf == NULL)
 		goto fail;
 	setpwent();
-	for (errno = 0; getpwent_r(&pwstorage, rbuf, rbuflen, &pwbuf) == 0; errno = 0) {
+	while ((retval = getpwent_r(&pwstorage, rbuf, rbuflen, &pwbuf)) == 0) {
 		if (pwbuf->pw_uid < minuid)
 			continue;
 		if (!semanage_list_find(shells, pwbuf->pw_shell))
@@ -248,7 +249,7 @@
 		free(path);
 	}
 
-	if (errno) {
+	if (retval && retval != ENOENT) {
 		WARN(s->h_semanage, "Error while fetching users.  "
 		     "Returning list so far.");
 	}
@@ -557,12 +558,13 @@
 			prefix = name;
 		}
 
-		errno = 0;
-		if (getpwnam_r(name, &pwstorage, rbuf, rbuflen, &pwent) != 0) {
-			if (errno != 0) {
+		retval = getpwnam_r(name, &pwstorage, rbuf, rbuflen, &pwent);
+		if (retval != 0 || pwent == NULL) {
+			if (retval != 0 && retval != ENOENT) {
 				*errors = STATUS_ERR;
 				goto cleanup;
 			}
+
 			WARN(s->h_semanage,
 			     "user %s not in password file", name);
 			continue;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:02:45
      
     | 
| Revision: 2620
          http://selinux.svn.sourceforge.net/selinux/?rev=2620&view=rev
Author:   ssmalley
Date:     2007-09-28 06:02:44 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20050309/
Removed Paths:
-------------
    tags/old/20050309/
Copied: tags/old/releases/20050309 (from rev 2619, tags/old/20050309)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:02:19
      
     | 
| Revision: 2619
          http://selinux.svn.sourceforge.net/selinux/?rev=2619&view=rev
Author:   ssmalley
Date:     2007-09-28 06:02:18 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20061018/
Removed Paths:
-------------
    tags/old/20061018/
Copied: tags/old/releases/20061018 (from rev 2618, tags/old/20061018)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:02:16
      
     | 
| Revision: 2618
          http://selinux.svn.sourceforge.net/selinux/?rev=2618&view=rev
Author:   ssmalley
Date:     2007-09-28 06:02:13 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20060315/
Removed Paths:
-------------
    tags/old/20060315/
Copied: tags/old/releases/20060315 (from rev 2617, tags/old/20060315)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:02:08
      
     | 
| Revision: 2617
          http://selinux.svn.sourceforge.net/selinux/?rev=2617&view=rev
Author:   ssmalley
Date:     2007-09-28 06:02:06 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20051207/
Removed Paths:
-------------
    tags/old/20051207/
Copied: tags/old/releases/20051207 (from rev 2616, tags/old/20051207)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:02:02
      
     | 
| Revision: 2616
          http://selinux.svn.sourceforge.net/selinux/?rev=2616&view=rev
Author:   ssmalley
Date:     2007-09-28 06:02:00 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20050907/
Removed Paths:
-------------
    tags/old/20050907/
Copied: tags/old/releases/20050907 (from rev 2615, tags/old/20050907)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:57
      
     | 
| Revision: 2615
          http://selinux.svn.sourceforge.net/selinux/?rev=2615&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:56 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20050622/
Removed Paths:
-------------
    tags/old/20050622/
Copied: tags/old/releases/20050622 (from rev 2614, tags/old/20050622)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:53
      
     | 
| Revision: 2614
          http://selinux.svn.sourceforge.net/selinux/?rev=2614&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:50 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20050107/
Removed Paths:
-------------
    tags/old/20050107/
Copied: tags/old/releases/20050107 (from rev 2613, tags/old/20050107)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:46
      
     | 
| Revision: 2613
          http://selinux.svn.sourceforge.net/selinux/?rev=2613&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:45 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20041102/
Removed Paths:
-------------
    tags/old/20041102/
Copied: tags/old/releases/20041102 (from rev 2612, tags/old/20041102)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:42
      
     | 
| Revision: 2612
          http://selinux.svn.sourceforge.net/selinux/?rev=2612&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:37 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040819/
Removed Paths:
-------------
    tags/old/20040819/
Copied: tags/old/releases/20040819 (from rev 2611, tags/old/20040819)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:33
      
     | 
| Revision: 2611
          http://selinux.svn.sourceforge.net/selinux/?rev=2611&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:32 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040629/
Removed Paths:
-------------
    tags/old/20040629/
Copied: tags/old/releases/20040629 (from rev 2610, tags/old/20040629)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:29
      
     | 
| Revision: 2610
          http://selinux.svn.sourceforge.net/selinux/?rev=2610&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:27 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040513/
Removed Paths:
-------------
    tags/old/20040513/
Copied: tags/old/releases/20040513 (from rev 2609, tags/old/20040513)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:24
      
     | 
| Revision: 2609
          http://selinux.svn.sourceforge.net/selinux/?rev=2609&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:23 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040408/
Removed Paths:
-------------
    tags/old/20040408/
Copied: tags/old/releases/20040408 (from rev 2608, tags/old/20040408)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:18
      
     | 
| Revision: 2608
          http://selinux.svn.sourceforge.net/selinux/?rev=2608&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:16 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040312/
Removed Paths:
-------------
    tags/old/20040312/
Copied: tags/old/releases/20040312 (from rev 2607, tags/old/20040312)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:12
      
     | 
| Revision: 2607
          http://selinux.svn.sourceforge.net/selinux/?rev=2607&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:11 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20040223/
Removed Paths:
-------------
    tags/old/20040223/
Copied: tags/old/releases/20040223 (from rev 2606, tags/old/20040223)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:07
      
     | 
| Revision: 2606
          http://selinux.svn.sourceforge.net/selinux/?rev=2606&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:06 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20031205/
Removed Paths:
-------------
    tags/old/20031205/
Copied: tags/old/releases/20031205 (from rev 2605, tags/old/20031205)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:01:02
      
     | 
| Revision: 2605
          http://selinux.svn.sourceforge.net/selinux/?rev=2605&view=rev
Author:   ssmalley
Date:     2007-09-28 06:01:00 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20031001/
Removed Paths:
-------------
    tags/old/20031001/
Copied: tags/old/releases/20031001 (from rev 2604, tags/old/20031001)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 13:00:59
      
     | 
| Revision: 2604
          http://selinux.svn.sourceforge.net/selinux/?rev=2604&view=rev
Author:   ssmalley
Date:     2007-09-28 06:00:55 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20030813/
Removed Paths:
-------------
    tags/old/20030813/
Copied: tags/old/releases/20030813 (from rev 2603, tags/old/20030813)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 12:59:02
      
     | 
| Revision: 2603
          http://selinux.svn.sourceforge.net/selinux/?rev=2603&view=rev
Author:   ssmalley
Date:     2007-09-28 05:59:01 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Move under the releases/ subdirectory.
Added Paths:
-----------
    tags/old/releases/20030711/
Removed Paths:
-------------
    tags/old/20030711/
Copied: tags/old/releases/20030711 (from rev 2602, tags/old/20030711)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ssm...@us...> - 2007-09-28 12:58:04
      
     | 
| Revision: 2602
          http://selinux.svn.sourceforge.net/selinux/?rev=2602&view=rev
Author:   ssmalley
Date:     2007-09-28 05:58:01 -0700 (Fri, 28 Sep 2007)
Log Message:
-----------
Rearrange.
Added Paths:
-----------
    tags/old/releases/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ew...@us...> - 2007-09-27 20:09:47
      
     | 
| Revision: 2600
          http://selinux.svn.sourceforge.net/selinux/?rev=2600&view=rev
Author:   ewalsh
Date:     2007-09-27 13:07:56 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
Author: Daniel J Walsh
Email: dw...@re...
Subject: libselinux segfault, if file_contexts file does not exist
Date: Thu, 27 Sep 2007 14:04:06 -0400
https://bugzilla.redhat.com/show_bug.cgi?id=308851
Modified Paths:
--------------
    trunk/libselinux/src/matchpathcon.c
Modified: trunk/libselinux/src/matchpathcon.c
===================================================================
--- trunk/libselinux/src/matchpathcon.c	2007-09-27 13:38:54 UTC (rev 2599)
+++ trunk/libselinux/src/matchpathcon.c	2007-09-27 20:07:56 UTC (rev 2600)
@@ -305,8 +305,10 @@
 
 void matchpathcon_fini(void)
 {
-	selabel_close(hnd);
-	hnd = NULL;
+	if (hnd) {
+		selabel_close(hnd);
+		hnd = NULL;
+	}
 }
 
 int matchpathcon(const char *name, mode_t mode, security_context_t * con)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |