[Apparmor-dev] [PATCH] af_names.h generated wrong under tr_TR.UTF-8
locale
S.Çağlar Onur
caglar at pardus.org.tr
Thu Aug 2 06:29:17 MDT 2007
Hi;
Turkish has 4 letter "I"s. English has only two, a lowercase dotted i and an
uppercase dotless I. Turkish has lowercase and uppercase forms of both dotted
and dotless I. So tolower(I) != i and toupper(i) != I for us.
Althought this situation is not a apparmor bug (sed can't convert these properly)
its directly affected. And fails like following;
cc -O2 -pipe -Wall -Wstrict-prototypes -Wsign-compare -Wnested-externs -Wformat-security -Wunused-parameter -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -DSUBDOMAIN_CONFDIR=\"/etc/apparmor\" -c -o parser_main.o parser_main.c
cc -O2 -pipe -Wall -Wstrict-prototypes -Wsign-compare -Wnested-externs -Wformat-security -Wunused-parameter -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -DSUBDOMAIN_CONFDIR=\"/etc/apparmor\" -c -o parser_misc.o parser_misc.c
In file included from parser_misc.c:194:
af_names.h:11: error: `AF_DECNET' undeclared here (not in a function)
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[60].family')
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[60]')
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[61].family')
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[61]')
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[62].family')
af_names.h:11: error: initializer element is not constant
af_names.h:11: error: (near initialization for `network_mappings[62]')
af_names.h:11: error: initializer element is not constant
.....
cause af_names.h wrongly generated like following
caglar at zangetsu apparmor-parser $ cat /var/pisi/apparmor-parser-2.0.2.36-10/work/apparmor-parser-2.0.2/af_names.h
AA_GEN_NET_ENT("ınet", AF_INET)
AA_GEN_NET_ENT("ax25", AF_AX25)
AA_GEN_NET_ENT("ıpx", AF_IPX)
AA_GEN_NET_ENT("appletalk", AF_APPLETALK)
AA_GEN_NET_ENT("netrom", AF_NETROM)
AA_GEN_NET_ENT("brıdge", AF_BRIDGE)
AA_GEN_NET_ENT("atmpvc", AF_ATMPVC)
AA_GEN_NET_ENT("x25", AF_X25)
AA_GEN_NET_ENT("ınet6", AF_INET6)
AA_GEN_NET_ENT("rose", AF_ROSE)
AA_GEN_NET_ENT("decnet", AF_DECNET)
AA_GEN_NET_ENT("netbeuı", AF_NETBEUI)
AA_GEN_NET_ENT("securıty", AF_SECURITY)
AA_GEN_NET_ENT("key", AF_KEY)
AA_GEN_NET_ENT("packet", AF_PACKET)
AA_GEN_NET_ENT("ash", AF_ASH)
AA_GEN_NET_ENT("econet", AF_ECONET)
AA_GEN_NET_ENT("atmsvc", AF_ATMSVC)
AA_GEN_NET_ENT("sna", AF_SNA)
AA_GEN_NET_ENT("ırda", AF_IRDA)
AA_GEN_NET_ENT("pppox", AF_PPPOX)
AA_GEN_NET_ENT("wanpıpe", AF_WANPIPE)
AA_GEN_NET_ENT("bluetooth", AF_BLUETOOTH)
But these must locale independent. So please apply following simple patch to solve this issue.
Index: parser/Makefile
===================================================================
--- parser/Makefile (revision 874)
+++ parser/Makefile (working copy)
@@ -176,7 +176,7 @@
@mv -f .ver $@
af_names.h: /usr/include/linux/socket.h
- sed -n -e "/AF_MAX/d" -n -e "/AF_UNSPEC/d" -n -e "/AF_UNIX/d" -n -e "/AF_LOCAL/d" -n -e "/AF_NETLINK/d" -n -e "/AF_LLC/d" -n -e "/AF_IUCV/d" -n -e "/AF_TIPC/d" -e "s/^\#define[ \\t]\\+AF_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/AA_GEN_NET_ENT(\"\\L\\1\", \\UAF_\\1)/p" $< > $@
+ LC_ALL=C sed -n -e "/AF_MAX/d" -n -e "/AF_UNSPEC/d" -n -e "/AF_UNIX/d" -n -e "/AF_LOCAL/d" -n -e "/AF_NETLINK/d" -n -e "/AF_LLC/d" -n -e "/AF_IUCV/d" -n -e "/AF_TIPC/d" -e "s/^\#define[ \\t]\\+AF_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/AA_GEN_NET_ENT(\"\\L\\1\", \\UAF_\\1)/p" $< > $@
Cheers
--
S.Çağlar Onur <caglar at pardus.org.tr>
http://cekirdek.pardus.org.tr/~caglar/
Linux is like living in a teepee. No Windows, no Gates and an Apache in house!
More information about the Apparmor-dev
mailing list