Hello,

Compiling uWSGI-0.9.6-rc1 for Python 2.6 with CFLAGS '-O2 -fno-strict-aliasing' breaks with warning 'ini.c:86: error: ‘section’ may be used uninitialized in this function' (see attached building log).

('-O2' is standard building flag for Debian package, and '-fno-strict-aliasing' legitimately fixes another warning.)

Provided patch initializes variable 'section' with empty string.

As side effect, empty section name in '--ini' option value will be equal to default section name. I.e. '--ini some.ini:' will be equal to '--ini some.ini:uwsgi'.
/tmp/uwsgi-0.9.6-rc1$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.4-9' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.5 20100816 (prerelease) (Debian 4.4.4-9)

/tmp/uwsgi-0.9.6-rc1$ python -V
Python 2.6.6

/tmp/uwsgi-0.9.6-rc1$ CFLAGS='-O2 -fno-strict-aliasing' make
python uwsgiconfig.py --build
*** uWSGI compiling ***
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o utils.o utils.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o pyutils.o pyutils.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o protocol.o protocol.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o socket.o socket.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o logging.o logging.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o wsgi_handlers.o wsgi_handlers.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o wsgi_headers.o wsgi_headers.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o uwsgi_handlers.o uwsgi_handlers.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o plugins.o plugins.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o main.o uwsgi.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o uwsgi_pymodule.o uwsgi_pymodule.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o async.o async.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o nagios.o nagios.c
gcc -pthread -c -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Werror -O2 -fno-strict-aliasing -I/usr/include/python2.6 -I/usr/include/python2.6 -DUWSGI_EMBEDDED -DUWSGI_UDP -DUWSGI_ASYNC -DUWSGI_MULTICAST -DUWSGI_MINTERPRETERS -DUWSGI_NAGIOS -DUWSGI_INI -DUWSGI_DEBUG -DUWSGI_PROXY -DUWSGI_HTTP -DUWSGI_SNMP -DUWSGI_THREADING -DUWSGI_PASTE -DUWSGI_SENDFILE -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR=\".\" -DUWSGI_SPOOLER -DUWSGI_DEBUG -g -o ini.o ini.c
cc1: warnings being treated as errors
ini.c: In function ‘uwsgi_ini_config’:
ini.c:86: error: ‘section’ may be used uninitialized in this function
make: *** [all] Ошибка 1

Description: Initialize section variable in ini.c
 gcc (v4.4.5 20100816) emits warning about uninitialized variable 'section' in
 'ini.c'.
 .
 This patch initialize 'section' variable with empty string and also check that
 'section_asked' variable wasn't be empty string.
Author: Leonid Borisenko <[email protected]>
Last-Update: 2010-08-26

Index: uwsgi-0.9.6-rc1/ini.c
===================================================================
--- uwsgi-0.9.6-rc1.orig/ini.c	2010-08-26 22:54:13.000000000 +0300
+++ uwsgi-0.9.6-rc1/ini.c	2010-08-26 22:54:59.000000000 +0300
@@ -83,7 +83,7 @@
 
 	char *ini_line;
 
-	char *section;
+	char *section = "";
 	char *key;
 	char *val;
 
@@ -96,7 +96,9 @@
 	colon = strchr(file, ':');
 	if (colon) {
 		colon[0] = 0;
-		section_asked = colon+1 ;
+		if (colon[1] != 0) {
+			section_asked = colon+1 ;
+		}
 	}
 
 	fd = open(file, O_RDONLY);
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to