[Lsb-messages] /var/www/bzr/lsb/devel/runtime-test r1288: Better error reporting in vsrt_create_exec_file() (bug 3568).

Jeff Licquia licquia at linuxfoundation.org
Mon Aug 12 20:06:44 UTC 2013


------------------------------------------------------------
revno: 1288
committer: Jeff Licquia <licquia at linuxfoundation.org>
branch nick: runtime-test
timestamp: Mon 2013-08-12 16:06:44 -0400
message:
  Better error reporting in vsrt_create_exec_file() (bug 3568).
modified:
  modules/lsb-os/SRC/common/vsrtlib/mkmmap.c
-------------- next part --------------
=== modified file 'modules/lsb-os/SRC/common/vsrtlib/mkmmap.c'
--- a/modules/lsb-os/SRC/common/vsrtlib/mkmmap.c	2013-08-05 21:27:18 +0000
+++ b/modules/lsb-os/SRC/common/vsrtlib/mkmmap.c	2013-08-12 20:06:44 +0000
@@ -560,7 +560,7 @@
 {
 	int		fd;
 	char		*addr, *buf;
-	int		size, success;
+	int		size, success, actual;
 
 	inp->fd = -1;
 
@@ -596,7 +596,8 @@
 	errno = success = 0;
 	while (!success)
 	{
-		if (write(fd, (void*)addr, (size_t)(size*vsrt_pgsz)) != (size*vsrt_pgsz)) {
+		actual = write(fd, (void*)addr, (size_t)(size*vsrt_pgsz));
+		if (actual != (size*vsrt_pgsz)) {
 			if ((errno != 0) && (size > 1)) {
 				if (size == 3) {
 					addr += vsrt_pgsz;
@@ -605,6 +606,12 @@
 				else if (size == 2)
 					size--;
 			}
+			else if (errno == 0) {
+				in_rpt("vsrt_create_exec_file: write() did not write expected number of bytes");
+				in_rpt(" expected: %d (size == %d), actual: %d", size*vsrt_pgsz, size, actual);
+				xx_rpt(FAILURE);
+				return(-1);
+			}
 			else {
 				in_rpt("vsrt_create_exec_file: write() failed, errno = %d (%s)", errno, errname(errno));
 				xx_rpt(FAILURE);



More information about the lsb-messages mailing list