]> git.sur5r.net Git - i3/i3/commitdiff
Avoid use of uninitialized in init_dpi_end
authorTheo Buehler <tb@openbsd.org>
Wed, 23 Aug 2017 13:48:58 +0000 (15:48 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 6 Sep 2017 05:36:08 +0000 (07:36 +0200)
If conn == NULL or display == NULL, init_dpi() jumps to init_dpi_end
before (declaring and) initializing resource. In init_dpi_end, there
is a free(resource) call conditionally on resource != NULL, so this
may lead to a bogus free. Found by clang -Wsometimes-uninitialized.

libi3/dpi.c

index ce85cacc59fcc2d48c0b35877a334f323ab73c15..93a3c6f6a99f1074d333adb3ebdf6250f671beb7 100644 (file)
@@ -24,6 +24,7 @@ static long init_dpi_fallback(void) {
  */
 void init_dpi(void) {
     xcb_xrm_database_t *database = NULL;
+    char *resource = NULL;
 
     if (conn == NULL) {
         goto init_dpi_end;
@@ -35,7 +36,6 @@ void init_dpi(void) {
         goto init_dpi_end;
     }
 
-    char *resource;
     xcb_xrm_resource_get_string(database, "Xft.dpi", NULL, &resource);
     if (resource == NULL) {
         DLOG("Resource Xft.dpi not specified, skipping.\n");