Bug 110018 - graphics/sdl_image: SIGSEGV from IMG_ReadXPMFromArray()
Summary: graphics/sdl_image: SIGSEGV from IMG_ReadXPMFromArray()
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: sat
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-03-06 23:30 UTC by Eric P. Scott
Modified: 2007-06-16 09:52 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eric P. Scott 2007-03-06 23:30:05 UTC
While attempting to port lcdtest to FreeBSD, I seem to have
stumbled upon a NULL pointer dereference "land mine" inside
SDL_image.

[lcdtest-1.0.2/lcdtest.c:116] 
  help_font_surface = IMG_ReadXPMFromArray (help_font_xpm);

[SDL_image-1.2.5/IMG_xpm.c:479-482]
SDL_Surface *IMG_ReadXPMFromArray(char **xpm)
{
	return load_xpm(xpm, NULL);
}

[SDL_image-1.2.5/IMG_xpm.c:308-311]
/* read XPM from either array or RWops */
static SDL_Surface *load_xpm(char **xpm, SDL_RWops *src)
{
	int start;

[SDL_image-1.2.5/IMG_xpm.c:329]
	start = SDL_RWtell(src);

[SDL/SDL_rwops.h:110]
#define SDL_RWtell(ctx)			(ctx)->seek(ctx, 0, RW_SEEK_CUR)

Fix: 

None yet.

Bonus points for fixing the problem and committing a working lcdtest port.  ;-)
How-To-Repeat: # This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	sysutils/lcdtest
#	sysutils/lcdtest/Makefile
#	sysutils/lcdtest/distinfo
#	sysutils/lcdtest/pkg-descr
#
echo c - sysutils/lcdtest
mkdir -p sysutils/lcdtest > /dev/null 2>&1
echo x - sysutils/lcdtest/Makefile
sed 's/^X//' >sysutils/lcdtest/Makefile << 'END-of-sysutils/lcdtest/Makefile'
X# New ports collection makefile for:	lcdtest
X# Date created:			6 Mar 2007
X# Whom:				Your Name Here <yourname@example.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	lcdtest
XPORTVERSION=	1.02
XCATEGORIES=	sysutils
XMASTER_SITES=	http://www.brouhaha.com/%7Eeric/software/lcdtest/download/
X
XMAINTAINER=	ports@FreeBSD.org
XCOMMENT=	LCD monitor test pattern generator
X
XBUILD_DEPENDS=	pngtopnm:${PORTSDIR}/graphics/netpbm
X
XUSE_GMAKE=	yes
XUSE_SDL=	sdl image
X
XMAN1=		lcdtest.1
X.if !defined(NOPORTDOCS)
XPORTDOCS=	README
X.endif
XMAKE_ENV+=	CPPFLAGS="`sdl-config --cflags`" LOADLIBES="`sdl-config --libs`"
XMAKE_ARGS=	-o SDL/SDL.h -o SDL/SDL_image.h CFLAGS="${CFLAGS}"
XPLIST_FILES=	bin/lcdtest
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/lcdtest ${PREFIX}/bin
X	${INSTALL_MAN} ${WRKSRC}/lcdtest.1 ${MAN1PREFIX}/man/man1
X.if !defined(NOPORTDOCS)
X	@${MKDIR} ${DOCSDIR}
X	${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR}
X.endif
X
X.include	<bsd.port.mk>
END-of-sysutils/lcdtest/Makefile
echo x - sysutils/lcdtest/distinfo
sed 's/^X//' >sysutils/lcdtest/distinfo << 'END-of-sysutils/lcdtest/distinfo'
XMD5 (lcdtest-1.02.tar.gz) = faa33d39a895be1987cf981a8e8cede7
XSHA256 (lcdtest-1.02.tar.gz) = 996e6da43b2d0c1e4a5cb49160e6f6a1c40326f378e38abeeccb1f286d7cb748
XSIZE (lcdtest-1.02.tar.gz) = 29058
END-of-sysutils/lcdtest/distinfo
echo x - sysutils/lcdtest/pkg-descr
sed 's/^X//' >sysutils/lcdtest/pkg-descr << 'END-of-sysutils/lcdtest/pkg-descr'
Xlcdtest is a utility to display LCD monitor test patterns.  It may be
Xuseful for adjusting the pixel clock frequency and phase on LCD
Xmonitors when using analog inputs, and for finding pixels that are
Xstuck on or off.
X
XWWW: http://www.brouhaha.com/%7Eeric/software/lcdtest/
END-of-sysutils/lcdtest/pkg-descr
exit
Comment 1 Edwin Groothuis freebsd_committer 2007-03-06 23:30:17 UTC
Responsible Changed
From-To: freebsd-ports-bugs->shaun

Over to maintainer
Comment 2 Eric P. Scott 2007-03-07 02:35:22 UTC
"Known" problem; patch available.

http://bugzilla.libsdl.org/show_bug.cgi?id=284
Comment 3 Eric P. Scott 2007-03-23 20:44:17 UTC
Replace "How-To-Repeat" with:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	sysutils/lcdtest
#	sysutils/lcdtest/Makefile
#	sysutils/lcdtest/distinfo
#	sysutils/lcdtest/pkg-descr
#
echo c - sysutils/lcdtest
mkdir -p sysutils/lcdtest > /dev/null 2>&1
echo x - sysutils/lcdtest/Makefile
sed 's/^X//' >sysutils/lcdtest/Makefile << 'END-of-sysutils/lcdtest/Makefile'
X# New ports collection makefile for:	lcdtest
X# Date created:			23 Mar 2007
X# Whom:				Your Name Here <yourname@example.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	lcdtest
XPORTVERSION=	1.03
XCATEGORIES=	sysutils
XMASTER_SITES=	http://www.brouhaha.com/%7Eeric/software/lcdtest/download/
X
XMAINTAINER=	ports@FreeBSD.org
XCOMMENT=	LCD monitor test pattern generator
X
XBUILD_DEPENDS=	pngtopnm:${PORTSDIR}/graphics/netpbm
X
XUSE_GMAKE=	yes
XUSE_SDL=	sdl image
X
X.if !defined(NOPORTDOCS)
XPORTDOCS=	README
X.endif
XMAKE_ENV+=	CPPFLAGS="`sdl-config --cflags`" LOADLIBES="`sdl-config --libs`"
XMAKE_ARGS=	-o SDL/SDL.h -o SDL/SDL_image.h \
XCFLAGS="${CFLAGS} -DRELEASE=${PORTVERSION}"
XPLIST_FILES=	bin/lcdtest
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/lcdtest ${PREFIX}/bin
X.if !defined(NOPORTDOCS)
X	@${MKDIR} ${DOCSDIR}
X	${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR}
X.endif
X
X.include	<bsd.port.mk>
END-of-sysutils/lcdtest/Makefile
echo x - sysutils/lcdtest/distinfo
sed 's/^X//' >sysutils/lcdtest/distinfo << 'END-of-sysutils/lcdtest/distinfo'
XMD5 (lcdtest-1.03.tar.gz) = 58427ceb4f938cce4380d551a8a04cf0
XSHA256 (lcdtest-1.03.tar.gz) = 6701efe2fa520b7957324c4a738c6e4b6670771a0da6fc225147690d6c1d8116
XSIZE (lcdtest-1.03.tar.gz) = 26739
END-of-sysutils/lcdtest/distinfo
echo x - sysutils/lcdtest/pkg-descr
sed 's/^X//' >sysutils/lcdtest/pkg-descr << 'END-of-sysutils/lcdtest/pkg-descr'
Xlcdtest is a utility to display LCD monitor test patterns.  It may be
Xuseful for adjusting the pixel clock frequency and phase on LCD
Xmonitors when using analog inputs, and for finding pixels that are
Xstuck on or off.
X
XWWW: http://www.brouhaha.com/%7Eeric/software/lcdtest/
END-of-sysutils/lcdtest/pkg-descr
exit
Comment 4 dfilter service freebsd_committer 2007-06-11 16:28:37 UTC
sat         2007-06-11 15:28:25 UTC

  FreeBSD ports repository

  Modified files:
    graphics/sdl_image   Makefile 
  Added files:
    graphics/sdl_image/files patch-sdl_image.segfault 
  Log:
  - Fix IMG_ReadXPMFromArray crash
  - Bump portrevision
  
  PR:             ports/110018
  Submitted by:   "Eric P. Scott" <eps+pbug0703@ana.com>
  Approved by:    shaun (maintainer)
  Obtained from:  bugzilla.libsdl.org, patch by Michael Koch <konqueror@gmx.de>
  
  Revision  Changes    Path
  1.31      +1 -1      ports/graphics/sdl_image/Makefile
  1.1       +164 -0    ports/graphics/sdl_image/files/patch-sdl_image.segfault (new)
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 5 sat freebsd_committer 2007-06-11 16:32:59 UTC
State Changed
From-To: open->patched

Wait for Eric to decide if he wants to maintain the port. 


Comment 6 sat freebsd_committer 2007-06-11 16:32:59 UTC
Responsible Changed
From-To: shaun->sat

Grab.
Comment 7 dfilter service freebsd_committer 2007-06-16 09:44:02 UTC
sat         2007-06-16 08:43:57 UTC

  FreeBSD ports repository

  Modified files:
    graphics             Makefile 
  Added files:
    graphics/lcdtest     Makefile distinfo pkg-descr 
  Log:
  Add port graphics/lcdtest:
  
  lcdtest is a utility to display LCD monitor test patterns.  It may be
  useful for adjusting the pixel clock frequency and phase on LCD
  monitors when using analog inputs, and for finding pixels that are
  stuck on or off.
  
  WWW: http://www.brouhaha.com/~eric/software/lcdtest/
  Author: Eric Smith <eric@brouhaha.com>
  
  Note: there are newer versions, but they have unresolved bugs
  
  PR:             ports/110018 (part of, based on)
  Submitted by:   Eric P. Scott <eps+pbug0703@ana.com>
  
  Revision  Changes    Path
  1.1079    +1 -0      ports/graphics/Makefile
  1.1       +38 -0     ports/graphics/lcdtest/Makefile (new)
  1.1       +3 -0      ports/graphics/lcdtest/distinfo (new)
  1.1       +7 -0      ports/graphics/lcdtest/pkg-descr (new)
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 8 sat freebsd_committer 2007-06-16 09:51:02 UTC
State Changed
From-To: patched->closed

Port committed. I assigned it to myself, but will be happy 
if Eric claims maitainership later on. 

Thanks!