svn commit: samba r24877 - in branches: SAMBA_3_2/source/lib SAMBA_3_2_0/source/lib

obnox at samba.org obnox at samba.org
Sun Sep 2 00:23:07 GMT 2007


Author: obnox
Date: 2007-09-02 00:23:02 +0000 (Sun, 02 Sep 2007)
New Revision: 24877

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24877

Log:
Don't panic in tdb validation code when the fork or waitpid fails.
Return error instead.

Michael


Modified:
   branches/SAMBA_3_2/source/lib/util_tdb.c
   branches/SAMBA_3_2_0/source/lib/util_tdb.c


Changeset:
Modified: branches/SAMBA_3_2/source/lib/util_tdb.c
===================================================================
--- branches/SAMBA_3_2/source/lib/util_tdb.c	2007-09-02 00:04:27 UTC (rev 24876)
+++ branches/SAMBA_3_2/source/lib/util_tdb.c	2007-09-02 00:23:02 UTC (rev 24877)
@@ -1097,7 +1097,8 @@
 		exit(tdb_validate_child(tdb, validate_fn));
 	}
 	else if (child_pid < 0) {
-		smb_panic("tdb_validate: fork for validation failed.");
+		DEBUG(1, ("tdb_validate: fork for validation failed.\n"));
+		goto done;
 	}
 
 	/* parent */
@@ -1112,14 +1113,14 @@
 			errno = 0;
 			continue;
 		}
-		DEBUG(0, ("tdb_validate: waitpid failed with errno %s\n",
+		DEBUG(1, ("tdb_validate: waitpid failed with error '%s'.\n",
 			  strerror(errno)));
-		smb_panic("tdb_validate: waitpid failed.");
+		goto done;
 	}
 	if (wait_pid != child_pid) {
-		DEBUG(0, ("tdb_validate: waitpid returned pid %d, "
+		DEBUG(1, ("tdb_validate: waitpid returned pid %d, "
 			  "but %d was expected\n", wait_pid, child_pid));
-		smb_panic("tdb_validate: waitpid returned unexpected PID.");
+		goto done;
 	}
 
 	DEBUG(10, ("tdb_validate: validating child returned.\n"));
@@ -1144,6 +1145,7 @@
 		ret = WSTOPSIG(child_status);
 	}
 
+done:
 	DEBUG(5, ("tdb_validate returning code '%d' for tdb '%s'\n", ret,
 		  tdb_name(tdb)));
 

Modified: branches/SAMBA_3_2_0/source/lib/util_tdb.c
===================================================================
--- branches/SAMBA_3_2_0/source/lib/util_tdb.c	2007-09-02 00:04:27 UTC (rev 24876)
+++ branches/SAMBA_3_2_0/source/lib/util_tdb.c	2007-09-02 00:23:02 UTC (rev 24877)
@@ -1097,7 +1097,8 @@
 		exit(tdb_validate_child(tdb, validate_fn));
 	}
 	else if (child_pid < 0) {
-		smb_panic("tdb_validate: fork for validation failed.");
+		DEBUG(1, ("tdb_validate: fork for validation failed.\n"));
+		goto done;
 	}
 
 	/* parent */
@@ -1112,14 +1113,14 @@
 			errno = 0;
 			continue;
 		}
-		DEBUG(0, ("tdb_validate: waitpid failed with errno %s\n",
+		DEBUG(1, ("tdb_validate: waitpid failed with error '%s'.\n",
 			  strerror(errno)));
-		smb_panic("tdb_validate: waitpid failed.");
+		goto done;
 	}
 	if (wait_pid != child_pid) {
-		DEBUG(0, ("tdb_validate: waitpid returned pid %d, "
+		DEBUG(1, ("tdb_validate: waitpid returned pid %d, "
 			  "but %d was expected\n", wait_pid, child_pid));
-		smb_panic("tdb_validate: waitpid returned unexpected PID.");
+		goto done;
 	}
 
 	DEBUG(10, ("tdb_validate: validating child returned.\n"));
@@ -1144,6 +1145,7 @@
 		ret = WSTOPSIG(child_status);
 	}
 
+done:
 	DEBUG(5, ("tdb_validate returning code '%d' for tdb '%s'\n", ret,
 		  tdb_name(tdb)));
 



More information about the samba-cvs mailing list