summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2020-03-06 15:00:46 +0100
committerSimon Rettberg2020-03-06 15:00:46 +0100
commitff4e770e645c05da48baddb30a77b9dc15ca76fd (patch)
tree7eb155343d7b5ece21479fa8f81524cfba7b672e
parent[SERVER] Reload cache maps periodically for local images (diff)
downloaddnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.tar.gz
dnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.tar.xz
dnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.zip
[SERVER] Handle "warn unused result" cases
-rw-r--r--src/server/fileutil.c2
-rw-r--r--src/server/globals.c5
-rw-r--r--src/server/image.c8
-rw-r--r--src/server/rpc.c2
-rw-r--r--src/server/server.c5
-rw-r--r--src/server/uplink.c14
6 files changed, 26 insertions, 10 deletions
diff --git a/src/server/fileutil.c b/src/server/fileutil.c
index 336ab68..9a9f066 100644
--- a/src/server/fileutil.c
+++ b/src/server/fileutil.c
@@ -68,7 +68,7 @@ bool file_setSize(int fd, uint64_t size)
// Try really hard... image loading logic relies on the file
// having the proper apparent size
uint8_t byte = 0;
- pread( fd, &byte, 1, size - 1 );
+ (void)!pread( fd, &byte, 1, size - 1 );
if ( pwrite( fd, &byte, 1, size - 1 ) == 1 ) return true;
return false;
}
diff --git a/src/server/globals.c b/src/server/globals.c
index 2e87400..ac079b1 100644
--- a/src/server/globals.c
+++ b/src/server/globals.c
@@ -113,7 +113,10 @@ static int ini_handler(void *custom UNUSED, const char* section, const char* key
void globals_loadConfig()
{
char *name = NULL;
- asprintf( &name, "%s/%s", _configDir, CONFIG_FILENAME );
+ if ( asprintf( &name, "%s/%s", _configDir, CONFIG_FILENAME ) == -1 ) {
+ logadd( LOG_ERROR, "Memory allocation error for config filename" );
+ exit( 1 );
+ }
if ( name == NULL ) return;
if ( initialLoad ) {
mutex_init( &loadLock, LOCK_LOAD_CONFIG );
diff --git a/src/server/image.c b/src/server/image.c
index 7ffe041..32c9efe 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -1446,9 +1446,13 @@ static bool image_clone(int sock, char *name, uint16_t revision, uint64_t imageS
logadd( LOG_WARNING, "OTF-Clone: Corrupted CRC-32 list. ignored. (%s)", name );
} else {
int fd = open( crcFile, O_WRONLY | O_CREAT, 0644 );
- write( fd, &masterCrc, sizeof(uint32_t) );
- write( fd, crc32list, crc32len );
+ ssize_t ret = write( fd, &masterCrc, sizeof(masterCrc) );
+ ret += write( fd, crc32list, crc32len );
close( fd );
+ if ( (size_t)ret != crc32len + sizeof(masterCrc) ) {
+ logadd( LOG_WARNING, "Could not save freshly received crc32 list for %s:%d", name, (int)revision );
+ unlink( crcFile );
+ }
}
}
free( crc32list );
diff --git a/src/server/rpc.c b/src/server/rpc.c
index a454d6d..b66b8fe 100644
--- a/src/server/rpc.c
+++ b/src/server/rpc.c
@@ -101,7 +101,7 @@ void rpc_init()
int fd = open( "/dev/urandom", O_RDONLY );
if ( fd != -1 ) {
uint32_t bla = 1;
- read( fd, &bla, 4 );
+ (void)!read( fd, &bla, 4 );
randomRunId = (randomRunId << 32) | bla;
}
close( fd );
diff --git a/src/server/server.c b/src/server/server.c
index 0dddea7..c9edc05 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -315,7 +315,10 @@ int main(int argc, char *argv[])
// No one-shot detected, normal server operation or errormsg serving
if ( demonize ) {
logadd( LOG_INFO, "Forking into background, see log file for further information" );
- daemon( 1, 0 );
+ if ( daemon( 0, 0 ) == -1 ) {
+ logadd( LOG_ERROR, "Could not daemon(): errno=%d", errno );
+ exit( 1 );
+ }
}
if ( errorMsg != NULL ) {
setupNetwork( bindAddress );
diff --git a/src/server/uplink.c b/src/server/uplink.c
index e644e56..71d9f94 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -1098,7 +1098,8 @@ static void uplink_addCrc32(dnbd3_uplink_t *uplink)
lists_crc = crc32( lists_crc, (uint8_t*)buffer, bytes );
lists_crc = net_order_32( lists_crc );
if ( lists_crc != masterCrc ) {
- logadd( LOG_WARNING, "Received corrupted crc32 list from uplink server (%s)!", uplink->image->name );
+ logadd( LOG_WARNING, "Received corrupted crc32 list from uplink server (%s:%d)!",
+ uplink->image->name, (int)uplink->image->rid );
free( buffer );
return;
}
@@ -1108,10 +1109,15 @@ static void uplink_addCrc32(dnbd3_uplink_t *uplink)
char path[len];
snprintf( path, len, "%s.crc", uplink->image->path );
const int fd = open( path, O_WRONLY | O_CREAT, 0644 );
- if ( fd >= 0 ) {
- write( fd, &masterCrc, sizeof(uint32_t) );
- write( fd, buffer, bytes );
+ if ( fd != -1 ) {
+ ssize_t ret = write( fd, &masterCrc, sizeof(masterCrc) );
+ ret += write( fd, buffer, bytes );
close( fd );
+ if ( (size_t)ret != sizeof(masterCrc) + bytes ) {
+ unlink( path );
+ logadd( LOG_WARNING, "Could not write crc32 file for %s:%d",
+ uplink->image->name, (int)uplink->image->rid );
+ }
}
}