Author: obnox Date: 2007-07-19 13:46:26 +0000 (Thu, 19 Jul 2007) New Revision: 23972
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23972 Log: Fix a bug in pwrite error detection in tdb_expand_file(): The proper error condition is (ret == -1) instead of (ret != number_of_byte_told_to_write). Michael Modified: branches/SAMBA_3_2/source/lib/tdb/common/io.c branches/SAMBA_3_2_0/source/lib/tdb/common/io.c branches/SAMBA_4_0/source/lib/tdb/common/io.c Changeset: Modified: branches/SAMBA_3_2/source/lib/tdb/common/io.c =================================================================== --- branches/SAMBA_3_2/source/lib/tdb/common/io.c 2007-07-19 13:37:49 UTC (rev 23971) +++ branches/SAMBA_3_2/source/lib/tdb/common/io.c 2007-07-19 13:46:26 UTC (rev 23972) @@ -234,13 +234,13 @@ while (addition) { int n = addition>sizeof(buf)?sizeof(buf):addition; int ret = pwrite(tdb->fd, buf, n, size); - if (ret != n) { + if (ret == -1) { TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write of %d failed (%s)\n", n, strerror(errno))); return -1; } - addition -= n; - size += n; + addition -= ret; + size += ret; } return 0; } Modified: branches/SAMBA_3_2_0/source/lib/tdb/common/io.c =================================================================== --- branches/SAMBA_3_2_0/source/lib/tdb/common/io.c 2007-07-19 13:37:49 UTC (rev 23971) +++ branches/SAMBA_3_2_0/source/lib/tdb/common/io.c 2007-07-19 13:46:26 UTC (rev 23972) @@ -234,13 +234,13 @@ while (addition) { int n = addition>sizeof(buf)?sizeof(buf):addition; int ret = pwrite(tdb->fd, buf, n, size); - if (ret != n) { + if (ret == -1) { TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write of %d failed (%s)\n", n, strerror(errno))); return -1; } - addition -= n; - size += n; + addition -= ret; + size += ret; } return 0; } Modified: branches/SAMBA_4_0/source/lib/tdb/common/io.c =================================================================== --- branches/SAMBA_4_0/source/lib/tdb/common/io.c 2007-07-19 13:37:49 UTC (rev 23971) +++ branches/SAMBA_4_0/source/lib/tdb/common/io.c 2007-07-19 13:46:26 UTC (rev 23972) @@ -234,13 +234,13 @@ while (addition) { int n = addition>sizeof(buf)?sizeof(buf):addition; int ret = pwrite(tdb->fd, buf, n, size); - if (ret != n) { + if (ret == -1) { TDB_LOG((tdb, TDB_DEBUG_FATAL, "expand_file write of %d failed (%s)\n", n, strerror(errno))); return -1; } - addition -= n; - size += n; + addition -= ret; + size += ret; } return 0; }
