Mercurial > pidgin
view src/dbus-analyze-types.py @ 11157:f068eaabe332
[gaim-migrate @ 13242]
Patch submitted to gaim-devel...
"Marcin Owsiany sent you a draft advisory regarding multiple libgadu
vulnerabilities. "Fortunately" gaim contains an extremely old version of
libgadu and is affected only by memory alignment bug, which cannot be
exploited on x86. No other critical vulnerabilities are known in gaim's
version of libgadu.
You'll find the patch in attachment.
Regards,
Wojtek Kaniewski
ekg/libgadu maintainer"
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Mon, 25 Jul 2005 21:20:14 +0000 |
parents | 1c5398ccbeb0 |
children | ebb02ea3c789 |
line wrap: on
line source
# This program takes a C header/source as the input and produces # # with --keyword=enum: the list of all enums # with --keyword=struct: the list of all structs # # the output styles: # # --enum DBUS_POINTER_NAME1, # DBUS_POINTER_NAME2, # DBUS_POINTER_NAME3, # # --list NAME1 # NAME2 # NAME3 # import re import sys myinput = iter(sys.stdin) def outputenum(name): print "DBUS_POINTER_%s," % name def outputdeclare(name): print "DECLARE_TYPE(%s, NONE);" % name def outputtext(name): print name myoutput = outputtext keyword = "struct" for arg in sys.argv[1:]: if arg[0:2] == "--": mylist = arg[2:].split("=") command = mylist[0] if len(mylist) > 1: value = mylist[1] else: value = None if command == "enum": myoutput = outputenum if command == "declare": myoutput = outputdeclare if command == "list": myoutput = outputtext if command == "keyword": keyword = value structregexp1 = re.compile(r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % keyword) structregexp2 = re.compile(r"^(typedef\s+)?%s" % keyword) structregexp3 = re.compile(r"^}\s+(\w+)\s*;") for line in myinput: match = structregexp1.match(line) if match is not None: myoutput(match.group(2)) continue match = structregexp2.match(line) if match is not None: while True: line = myinput.next() match = structregexp3.match(line) if match is not None: myoutput(match.group(1)) break if line[0] not in [" ", "\t", "{", "\n"]: break