]> git.ipfire.org Git - location/libloc.git/commitdiff
writer: Fail if the header could not be written successfully
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 11 May 2024 10:55:46 +0000 (11:55 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 11 May 2024 10:55:46 +0000 (11:55 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/writer.c

index 13948c282dbd199bd8fc7417c8f06d5a24c1071a..5ea992b71ac52f573b43d3a0697c8b279dfa4366 100644 (file)
@@ -643,6 +643,8 @@ END:
 }
 
 LOC_EXPORT int loc_writer_write(struct loc_writer* writer, FILE* f, enum loc_database_version version) {
+       size_t bytes_written = 0;
+
        // Check version
        switch (version) {
                case LOC_DATABASE_VERSION_UNSET:
@@ -766,7 +768,11 @@ LOC_EXPORT int loc_writer_write(struct loc_writer* writer, FILE* f, enum loc_dat
        if (r)
                return r;
 
-       fwrite(&header, 1, sizeof(header), f);
+       bytes_written = fwrite(&header, 1, sizeof(header), f);
+       if (bytes_written < sizeof(header)) {
+               ERROR(writer->ctx, "Could not write header: %s\n", strerror(errno));
+               return r;
+       }
 
        // Flush everything
        fflush(f);