* Cleanup heap in kaoupload.c on exit.
authorUrban Wallasch <urban.wallasch@freenet.de>
Wed, 21 Apr 2021 17:23:16 +0000 (19:23 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Wed, 21 Apr 2021 17:23:16 +0000 (19:23 +0200)
kaoupload.c

index 0d8b3b687284572a4c11103683f9e04ca20c6acb..5f078dc8b7eb8a65a55ebb8a3df73eee1f2cb75f 100644 (file)
@@ -51,6 +51,13 @@ static void sig_handler( int signum ){
   fprintf( stderr, "\nReceived signal %d, wrapping up gracefully.\n", signum );
 }
 
+static void doExit( int ec ) {
+    free( cfg.user );
+    free( cfg.pass );
+    free( cfg.url );
+    exit( ec );
+}
+
 static void cerr( const char *msg, int eno ) {
     fprintf( stderr, "ERROR: %s", msg );
     if ( eno )
@@ -67,7 +74,7 @@ static void err( const char *msg, int eno ) {
 
 static void die( const char *msg, int eno ) {
     err( msg, eno );
-    exit( EXIT_FAILURE );
+    doExit( EXIT_FAILURE );
 }
 
 static curl_off_t str_to_bwl( const char *s ) {
@@ -347,7 +354,7 @@ static void usage( char *pname ) {
     );
     printf( "Defaults for bandwidth limit, user, password and URL are taken "
             "from environment and configuration file, in this order.\n" );
-    exit( EXIT_FAILURE );
+    doExit( EXIT_FAILURE );
 }
 
 int main( int argc, char *argv[] ) {
@@ -432,5 +439,5 @@ int main( int argc, char *argv[] ) {
     free( cfg.user );
     free( cfg.pass );
     free( cfg.url );
-    exit( res ? EXIT_FAILURE : EXIT_SUCCESS );
+    doExit( res ? EXIT_FAILURE : EXIT_SUCCESS );
 }