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;
 }

Reply via email to