Staging
v0.8.1
v0.8.1
Revision 83ac0144fa3041556aa4f3952ebd979e0189a19c authored by Neal Norwitz on 28 July 2008, 05:06:20 UTC, committed by Neal Norwitz on 28 July 2008, 05:06:20 UTC
Issue #2620: Overflow checking when allocating or reallocating memory was not always being done properly in some python types and extension modules. PyMem_MALLOC, PyMem_REALLOC, PyMem_NEW and PyMem_RESIZE have all been updated to perform better checks and places in the code that would previously leak memory on the error path when such an allocation failed have been fixed.
1 parent c8e4bed
Makefile
# RISC OS Python
LIBSROOT = $.AcornC_C++.Libraries
# You may need to change some of the following
OSLIB = $(LIBSROOT).OSLib
CLIB = $(LIBSROOT).clib
TCPIPLIB = $(LIBSROOT).TCPIPLibs
DLKLIB = $(LIBSROOT).dlk
ZLIB = $(LIBSROOT).zlib
BZLIB = $(LIBSROOT).bzlib
EXPAT = $(LIBSROOT).expat.lib
OBJSCAN = $(DLKLIB).objscan
MAKEDLK = $(DLKLIB).makedlk
# change from time to time (don't forget to change !Boot also)
TARGET=Python23
BUILD=40
#
# You shouldn't need to change anything below this line
#
DLKFLAG= -DDLK
DLKOBJS = $(DLKLIB).o.dlk_load @.o.linktab
HEADERS = @,$(TCPIPLIB),@.^.Include,@.^.Modules,@.^.Objects,@.^.Python,$(CLIB),$(OSLIB),$(DLKLIB)
CFLAGS = -c $(DLKFLAG) -DRISCOS -DHAVE_CONFIG_H -wadP -throwback -APCS 3/32bit/fpe3
CC = cc $(CFLAGS) -j$(HEADERS)
CCEXPAT = cc $(CFLAGS) -j$(HEADERS),$(EXPAT) -DHAVE_EXPAT_H
LINK = link
LINKFLAGS = -aif #-NOUNUSED #-d
LOADLIBS = $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.socklib $(CLIB).o.Stubs $(OSLIB).o.OSLib32 $(DLKOBJS)
LIBFILE = libfile -c
.c.o :
$(CC) -o $@ $*.c
MAIN_PYTHON =\
@.^.Modules.o.python
LIB_PYTHON =\
@.^.LibPython
# code for main Python binary
MODULES_STATIC =\
@.^.Modules.o.main\
@.Modules.o.config\
@.^.Modules.o.getbuildinfo\
@.Modules.o.getpath_riscos\
@.Modules.o.riscosmodule\
@.^.Modules.o.gcmodule
# dynamic Modules
MODULES_DYNAMIC =\
@.^.Lib.array/pyd\
@.^.Lib.audioop/pyd\
@.^.Lib.binascii/pyd\
@.^.Lib.bz2/pyd\
@.^.Lib.cmath/pyd\
@.^.Lib.cPickle/pyd\
@.^.Lib.cStringIO/pyd\
@.^.Lib.datetime/pyd\
@.^.Lib.errno/pyd\
@.^.Lib.imageop/pyd\
@.^.Lib.itertools/pyd\
@.^.Lib.math/pyd\
@.^.Lib.md5/pyd\
@.^.Lib.operator/pyd\
@.^.Lib.parser/pyd\
@.^.Lib.rgbimg/pyd\
@.^.Lib.sha/pyd\
@.^.Lib.signal/pyd\
@.^.Lib.struct/pyd\
@.^.Lib.time/pyd\
@.^.Lib._locale/pyd\
@.^.Lib.zlib/pyd\
@.^.Lib.select/pyd\
@.^.Lib._socket/pyd\
@.^.Lib._codecs/pyd\
@.^.Lib._weakref/pyd\
@.^.Lib._testcapi/pyd\
@.^.Lib.unicodedata/pyd\
@.^.Lib.pyexpat/pyd\
@.^.Lib.plat-riscos.drawf/pyd\
@.^.Lib.plat-riscos.swi/pyd\
@.^.Lib._sre/pyd\
@.^.Lib.xxsubtype/pyd\
@.^.Lib._symtable/pyd\
@.^.Lib._random/pyd\
@.^.Lib.zipimport/pyd\
@.^.Lib._csv/pyd
OBJECTS_PYTHON =\
@.^.Python.o.traceback\
@.^.Python.o.sysmodule\
@.^.Python.o.structmember\
@.^.Python.o.strdup\
@.^.Python.o.sigcheck\
@.^.Python.o.pythonrun\
@.^.Python.o.pystate\
@.^.Python.o.pyfpe\
@.^.Python.o.mystrtoul\
@.^.Python.o.mysnprintf\
@.^.Python.o.modsupport\
@.^.Python.o.marshal\
@.^.Python.o.importdl\
@.^.Python.o.import\
@.^.Python.o.graminit\
@.^.Python.o.getversion\
@.^.Python.o.getplatform\
@.^.Python.o.getopt\
@.^.Python.o.getcopyright\
@.^.Python.o.getcompiler\
@.^.Python.o.getargs\
@.^.Python.o.frozenmain\
@.^.Python.o.frozen\
@.^.Python.o.errors\
@.^.Python.o.compile\
@.^.Python.o.ceval\
@.^.Python.o.bltinmodule\
@.^.Python.o.exceptions\
@.^.Python.o.codecs\
@.^.Python.o.symtable\
@.^.Python.o.future
OBJECTS_RISCOS = \
@.Python.o.dynload_riscos\
@.Python.o.getcwd_riscos\
@.Python.o.getmtime_riscos\
@.o.unixstuff
OBJECTS_OBJECTS =\
@.^.Objects.o.typeobject\
@.^.Objects.o.tupleobject\
@.^.Objects.o.stringobject\
@.^.Objects.o.sliceobject\
@.^.Objects.o.rangeobject\
@.^.Objects.o.object\
@.^.Objects.o.obmalloc\
@.^.Objects.o.moduleobject\
@.^.Objects.o.methodobject\
@.^.Objects.o.longobject\
@.^.Objects.o.listobject\
@.^.Objects.o.intobject\
@.^.Objects.o.boolobject\
@.^.Objects.o.iterobject\
@.^.Objects.o.funcobject\
@.^.Objects.o.frameobject\
@.^.Objects.o.floatobject\
@.^.Objects.o.fileobject\
@.^.Objects.o.enumobject\
@.^.Objects.o.dictobject\
@.^.Objects.o.complexobject\
@.^.Objects.o.cobject\
@.^.Objects.o.classobject\
@.^.Objects.o.cellobject\
@.^.Objects.o.bufferobject\
@.^.Objects.o.abstract\
@.^.Objects.o.unicodectype\
@.^.Objects.o.unicodeobject\
@.^.Objects.o.descrobject\
@.^.Objects.o.weakrefobject\
@.^.Objects.o.structseq
OBJECTS_PARSER =\
@.^.Parser.o.tokenizer\
@.^.Parser.o.printgrammar\
@.^.Parser.o.parsetok\
@.^.Parser.o.parser\
@.^.Parser.o.node\
@.^.Parser.o.myreadline\
@.^.Parser.o.metagrammar\
@.^.Parser.o.listnode\
@.^.Parser.o.intrcheck\
@.^.Parser.o.grammar1\
@.^.Parser.o.grammar\
@.^.Parser.o.firstsets\
@.^.Parser.o.bitset\
@.^.Parser.o.acceler
SUPPORT_FILES = @.^.!Boot @.^.!Run @.^.!Sprites @.^.!Sprites22 @.^.AddToPath
OBJECTS = $(OBJECTS_PYTHON) $(OBJECTS_PARSER) $(MODULES_STATIC) $(OBJECTS_OBJECTS) $(OBJECTS_RISCOS)
all: @.^.$(TARGET) $(MODULES_DYNAMIC) $(SUPPORT_FILES)
@.^.Modules.o.getbuildinfo: @.^.Modules.c.getbuildinfo
$(CC) -DBUILD=$(BUILD) -o @.^.Modules.o.getbuildinfo @.^.Modules.c.getbuildinfo
$(LIB_PYTHON): $(OBJECTS)
$(LIBFILE) $(LIB_PYTHON) $(OBJECTS)
@.^.$(TARGET): o.linktab $(MAIN_PYTHON) $(LIB_PYTHON)
$(LINK) -o @.^.$(TARGET) $(MAIN_PYTHON) @.^.LibPython $(LOADLIBS)
#########################################################################
# RISC OS support files
#
@.^.!Boot: support.!Boot
copy support.!Boot @.^.!Boot ~C~VF
settype @.^.!Boot feb
@.^.!Run: support.!Run
copy support.!Run @.^.!Run ~C~VF
settype @.^.!Run feb
@.^.!Sprites: support.!Sprites
copy support.!Sprites @.^.!Sprites ~C~VF
settype @.^.!Sprites ff9
@.^.!Sprites22: support.!Sprites22
copy support.!Sprites22 @.^.!Sprites22 ~C~VF
settype @.^.!Sprites22 ff9
@.^.AddToPath: support.AddToPath
copy support.AddToPath @.^.AddToPath ~C~VF
settype @.^.AddToPath ffc
#########################################################################
# Dynamic Modules
#
@.^.Lib.array/pyd: @.^.Modules.o.arraymodule s.linktab
$(MAKEDLK) -d @.^.Lib.array/pyd -s s.linktab -o @.^.Modules.o.arraymodule -e initarray
@.^.Lib.audioop/pyd: @.^.Modules.o.audioop # s.linktab
$(MAKEDLK) -d @.^.Lib.audioop/pyd -s s.linktab -o @.^.Modules.o.audioop -e initaudioop
@.^.Lib.binascii/pyd: @.^.Modules.o.binascii s.linktab
$(MAKEDLK) -d @.^.Lib.binascii/pyd -s s.linktab -o @.^.Modules.o.binascii -e initbinascii
@.^.Lib.cmath/pyd: @.^.Modules.o.cmathmodule s.linktab
$(MAKEDLK) -d @.^.Lib.cmath/pyd -s s.linktab -o @.^.Modules.o.cmathmodule -e initcmath
@.^.Lib.cPickle/pyd: @.^.Modules.o.cPickle s.linktab
$(MAKEDLK) -d @.^.Lib.cPickle/pyd -s s.linktab -o @.^.Modules.o.cPickle -e initcPickle
@.^.Lib.cStringIO/pyd: @.^.Modules.o.cStringIO s.linktab
$(MAKEDLK) -d @.^.Lib.cStringIO/pyd -s s.linktab -o @.^.Modules.o.cStringIO -e initcStringIO
@.^.Lib._csv/pyd: @.^.Modules.o._csv s.linktab
$(MAKEDLK) -d @.^.Lib._csv/pyd -s s.linktab -o @.^.Modules.o._csv -e init_csv
@.^.Lib.plat-riscos.drawf/pyd: Modules.o.drawfmodule #s.linktab
$(LINK) -aof -o Modules.o.drawflink Modules.o.drawfmodule $(OSLIB).o.OSLIB32
$(MAKEDLK) -d @.^.Lib.plat-riscos.drawf/pyd -s s.linktab -o Modules.o.drawflink -e initdrawf
@.^.Lib.datetime/pyd: @.^.Modules.o.datetimemodule s.linktab
$(MAKEDLK) -d @.^.Lib.datetime/pyd -s s.linktab -o @.^.Modules.o.datetimemodule -e initdatetime
@.^.Lib.errno/pyd: @.^.Modules.o.errnomodule #s.linktab
$(MAKEDLK) -d @.^.Lib.errno/pyd -s s.linktab -o @.^.Modules.o.errnomodule -e initerrno
@.^.Lib.imageop/pyd: @.^.Modules.o.imageop s.linktab
$(MAKEDLK) -d @.^.Lib.imageop/pyd -s s.linktab -o @.^.Modules.o.imageop -e initimageop
@.^.Lib.itertools/pyd: @.^.Modules.o.itertoolsmodule s.linktab
$(MAKEDLK) -d @.^.Lib.itertools/pyd -s s.linktab -o @.^.Modules.o.itertoolsmodule -e inititertools
@.^.Lib.math/pyd: @.^.Modules.o.mathmodule s.linktab
$(MAKEDLK) -d @.^.Lib.math/pyd -s s.linktab -o @.^.Modules.o.mathmodule -e initmath
@.^.Lib.mmap/pyd: @.^.Modules.o.mmapmodule s.linktab
$(MAKEDLK) -d @.^.Lib.mmap/pyd -s s.linktab -o @.^.Modules.o.mmapmodule -e initmmap
@.^.Lib.md5/pyd: @.^.Modules.o.md5c @.^.Modules.o.md5module s.linktab
$(LINK) -aof -o @.^.Modules.o.md5link @.^.Modules.o.md5c @.^.Modules.o.md5module
$(MAKEDLK) -d @.^.Lib.md5/pyd -s s.linktab -o @.^.Modules.o.md5link -e initmd5
@.^.Lib.operator/pyd: @.^.Modules.o.operator s.linktab
$(MAKEDLK) -d @.^.Lib.operator/pyd -s s.linktab -o @.^.Modules.o.operator -e initoperator
@.^.Lib.parser/pyd: @.^.Modules.o.parsermodule s.linktab
$(MAKEDLK) -d @.^.Lib.parser/pyd -s s.linktab -o @.^.Modules.o.parsermodule -e initparser
@.^.Lib.rgbimg/pyd: @.^.Modules.o.rgbimgmodule s.linktab
$(MAKEDLK) -d @.^.Lib.rgbimg/pyd -s s.linktab -o @.^.Modules.o.rgbimgmodule -e initrgbimg
@.^.Lib.sha/pyd: @.^.Modules.o.shamodule s.linktab
$(MAKEDLK) -d @.^.Lib.sha/pyd -s s.linktab -o @.^.Modules.o.shamodule -e initsha
@.^.Lib.signal/pyd: @.^.Modules.o.signalmodule s.linktab
$(MAKEDLK) -d @.^.Lib.signal/pyd -s s.linktab -o @.^.Modules.o.signalmodule -e initsignal
@.^.Lib.strop/pyd: @.^.Modules.o.stropmodule s.linktab
$(MAKEDLK) -d @.^.Lib.strop/pyd -s s.linktab -o @.^.Modules.o.stropmodule -e initstrop
@.^.Lib.struct/pyd: @.^.Modules.o.structmodule s.linktab
$(MAKEDLK) -d @.^.Lib.struct/pyd -s s.linktab -o @.^.Modules.o.structmodule -e initstruct
@.^.Lib.plat-riscos.swi/pyd: Modules.o.swimodule s.linktab
$(LINK) -aof -o Modules.o.swilink Modules.o.swimodule $(OSLIB).o.OSLIB32
$(MAKEDLK) -d @.^.Lib.plat-riscos.swi/pyd -s s.linktab -o Modules.o.swilink -e initswi
@.^.Lib._locale/pyd: @.^.Modules.o._localemodule s.linktab
$(MAKEDLK) -d @.^.Lib._locale/pyd -s s.linktab -o @.^.Modules.o._localemodule -e init_locale
@.^.Lib._sre/pyd: @.^.Modules.o._sre s.linktab
$(MAKEDLK) -d @.^.Lib._sre/pyd -s s.linktab -o @.^.Modules.o._sre -e init_sre
@.^.Lib._codecs/pyd: @.^.Modules.o._codecsmodule s.linktab
$(MAKEDLK) -d @.^.Lib._codecs/pyd -s s.linktab -o @.^.Modules.o._codecsmodule -e init_codecs
@.^.Lib._weakref/pyd: @.^.Modules.o._weakref s.linktab
$(MAKEDLK) -d @.^.Lib._weakref/pyd -s s.linktab -o @.^.Modules.o._weakref -e init_weakref
@.^.Lib._testcapi/pyd: @.^.Modules.o._testcapimodule s.linktab
$(MAKEDLK) -d @.^.Lib._testcapi/pyd -s s.linktab -o @.^.Modules.o._testcapimodule -e init_testcapi
@.^.Lib.unicodedata/pyd: @.^.Modules.o.unicodedata s.linktab
$(MAKEDLK) -d @.^.Lib.unicodedata/pyd -s s.linktab -o @.^.Modules.o.unicodedata -e initunicodedata
@.^.Lib.xxsubtype/pyd: @.^.Modules.o.xxsubtype s.linktab
$(MAKEDLK) -d @.^.Lib.xxsubtype/pyd -s s.linktab -o @.^.Modules.o.xxsubtype -e initxxsubtype
@.^.Lib._random/pyd: @.^.Modules.o._randommodule s.linktab
$(MAKEDLK) -d @.^.Lib._random/pyd -s s.linktab -o @.^.Modules.o._randommodule -e init_random
@.^.Lib._symtable/pyd: @.^.Modules.o.symtablemodule s.linktab
$(MAKEDLK) -d @.^.Lib._symtable/pyd -s s.linktab -o @.^.Modules.o.symtablemodule -e init_symtable
############################################################################
# Dynamic Modules with other dependencies
#
@.^.Lib.select/pyd: @.^.Modules.o.selectmodule s.linktab
$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib5
$(MAKEDLK) -d @.^.Lib.select/pyd -s s.linktab -o @.^.Modules.o.selectlink -e initselect
@.^.Modules.o.selectmodule: @.^.Modules.c.selectmodule
$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.selectmodule
@.^.Lib._socket/pyd: @.^.Modules.o.socketmodule s.linktab
$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib5
$(MAKEDLK) -d @.^.Lib._socket/pyd -s s.linktab -o @.^.Modules.o._socketlink -e init_socket
@.^.Modules.o.socketmodule: @.^.Modules.c.socketmodule
$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.socketmodule
@.^.Lib.zlib/pyd: @.^.Modules.o.zlibmodule s.linktab
$(LINK) -aof -o @.^.Modules.o.zliblink @.^.Modules.o.zlibmodule $(ZLIB).zlib
$(MAKEDLK) -d @.^.Lib.zlib/pyd -s s.linktab -o @.^.Modules.o.zliblink -e initzlib
@.^.Modules.o.zlibmodule: @.^.Modules.c.zlibmodule
$(CC) -I$(ZLIB) -o $@ @.^.Modules.c.zlibmodule
@.^.Lib.bz2/pyd: @.^.Modules.o.bz2module s.linktab
$(LINK) -aof -o @.^.Modules.o.bz2link @.^.Modules.o.bz2module $(BZLIB).bzlib
$(MAKEDLK) -d @.^.Lib.bz2/pyd -s s.linktab -o @.^.Modules.o.bz2link -e initbz2
@.^.Modules.o.bz2module: @.^.Modules.c.bz2module
$(CC) -I$(BZLIB) -o $@ @.^.Modules.c.bz2module
@.^.Lib.time/pyd: @.^.Modules.o.timemodule s.linktab @.o.sleep
$(LINK) -aof -o @.^.Modules.o.timelink @.^.Modules.o.timemodule @.o.sleep $(OSLIB).o.OSLib32
$(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.^.Modules.o.timelink -e inittime
#@.^.Lib.time/pyd: @.Modules.o.timemodule s.linktab
# $(LINK) -aof -o @.Modules.o.timelink @.Modules.o.timemodule $(OSLIB).o.OSLib32
# $(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.Modules.o.timelink -e inittime
@.^.Lib.pyexpat/pyd: @.^.Modules.o.pyexpat s.linktab
$(LINK) -aof -o @.^.Modules.o.pyexpatlink @.^.Modules.o.pyexpat $(EXPAT).expat_lib
$(MAKEDLK) -d @.^.Lib.pyexpat/pyd -s s.linktab -o @.^.Modules.o.pyexpatlink -e initpyexpat
@.^.Modules.o.pyexpat: @.^.Modules.c.pyexpat
$(CCEXPAT) -o $@ @.^.Modules.c.pyexpat
@.^.Lib.zipimport/pyd: @.^.Modules.o.zipimport s.linktab
$(LINK) -aof -o @.^.Modules.o.zipimportlink @.^.Modules.o.zipimport o.unixstuff $(OSLIB).o.OSLib32
$(MAKEDLK) -d @.^.Lib.zipimport/pyd -s s.linktab -o @.^.Modules.o.zipimportlink -e initzipimport
##########################################################################
# dynamic linking symbol table
#
o.linktab: s.linktab
ObjAsm -APCS 3/32bit s.linktab o.linktab
s.linktab: $(OBJECTS)
$(OBJSCAN) -s s.linktab -o $(OBJECTS) $(clib).o.stubs
##########################################################################
# special targets
#
libclean:
-wipe @.^.Lib.*/pyc ~C~V
-wipe @.^.Lib.*/pyo ~C~V
-wipe @.^.Lib.plat-riscos.*/pyc ~C~V
-wipe @.^.Lib.plat-riscos.*/pyo ~C~V
-wipe @.^.Lib.test.*/pyc ~C~V
-wipe @.^.Lib.test.*/pyo ~C~V
-wipe @.^.Lib.encodings.*/pyc ~C~V
-wipe @.^.Lib.encodings.*/pyo ~C~V
-wipe @.^.Lib.curses.*/pyc ~C~V
-wipe @.^.Lib.curses.*/pyo ~C~V
-wipe @.^.Lib.xml.*/pyc ~C~V
-wipe @.^.Lib.xml.*/pyo ~C~V
-wipe @.^.Lib.xml.sax.*/pyc ~C~V
-wipe @.^.Lib.xml.sax.*/pyo ~C~V
-wipe @.^.Lib.xml.dom.*/pyc ~C~V
-wipe @.^.Lib.xml.dom.*/pyo ~C~V
-wipe @.^.Lib.xml.parsers.*/pyc ~C~V
-wipe @.^.Lib.xml.parsers.*/pyo ~C~V
clean: libclean
-wipe @.^.Modules.o.* ~C~V
-wipe @.^.Objects.o.* ~C~V
-wipe @.^.Parser.o.* ~C~V
-wipe @.^.Python.o.* ~C~V
-wipe @.Modules.o.* ~C~V
-wipe @.Python.o.* ~C~V
-wipe @.o.* ~C ~V
rebuild: clean clean-support
remove @.^.$(TARGET)
-wipe @.^.Lib.*/pyd ~C ~V
-wipe @.^.Lib.plat-riscos.*/pyd ~C~V
remove s.linktab
remove @.^.LibPython
clean-support:
-wipe @.^.!* ~C~V
remove @.^.AddToPath
cdirs:
cdir @.Modules.o
cdir @.Python.o
cdir @.s
cdir @.o
cdir @.^.Python.o
cdir @.^.Parser.o
cdir @.^.Objects.o
cdir @.^.Modules.o
# Dynamic dependencies:
Computing file changes ...