[Pkg-fonts-bugs] Ubuntu fontforge 0.0.20090923-2ubuntu1

Ubuntu Merge-o-Matic mom at ubuntu.com
Fri Oct 1 10:14:08 UTC 2010


This e-mail has been sent due to an upload to Ubuntu that contains Ubuntu
changes.  It contains the difference between the new version and the
previous version of the same source package in Ubuntu.
-------------- next part --------------
Format: 1.8
Date: Tue, 28 Sep 2010 03:58:33 +0200
Source: fontforge
Binary: fontforge fontforge-nox libfontforge-dev libfontforge1 libgdraw4 python-fontforge
Architecture: source
Version: 0.0.20090923-2ubuntu1
Distribution: maverick
Urgency: low
Maintainer: Debian Fonts Task Force <pkg-fonts-devel at lists.alioth.debian.org>
Changed-By: Loïc Minier <loic.minier at ubuntu.com>
Description: 
 fontforge  - font editor
 fontforge-nox - font editor - non-X version
 libfontforge-dev - font editor - runtime library (development files)
 libfontforge1 - font editor - runtime library
 libgdraw4  - font editor - runtime graphics and widget library
 python-fontforge - font editor - Python bindings
Changes: 
 fontforge (0.0.20090923-2ubuntu1) maverick; urgency=low
 .
   * New patch, 910_fix-overlapping-strcpys, adds a new strmove() to use
     instead of some of the overlapping strcpy() calls in gutils/fsys.c as this
     breaks on amd64 and causes ttf-freefont to FTBFS.  A different upstream
     fix is in 0.0.20100501 but is more intrusive to backport and might cause
     issues on its own.
Checksums-Sha1: 
 4899d8c8243ec92d90f5032d8e09868399bf260d 1788 fontforge_0.0.20090923-2ubuntu1.dsc
 b4d579c00db943dbce424c2a3d01c1501b2d30d7 16980 fontforge_0.0.20090923-2ubuntu1.debian.tar.gz
Checksums-Sha256: 
 5b9ceebb65a4a8464c15aa06df49ac6d4b71019ade73c691e87ebe7542145837 1788 fontforge_0.0.20090923-2ubuntu1.dsc
 6a659b11723b310a56f364d0bd0f83129d7d403b54c420bef3ec076ed9dc269a 16980 fontforge_0.0.20090923-2ubuntu1.debian.tar.gz
Files: 
 b274f7aada08e1141dbf9677492fcf0a 1788 fonts optional fontforge_0.0.20090923-2ubuntu1.dsc
 7fb410e3b98e4038479d484bba5902ee 16980 fonts optional fontforge_0.0.20090923-2ubuntu1.debian.tar.gz
-------------- next part --------------
diff -pruN 0.0.20090923-2/debian/changelog 0.0.20090923-2ubuntu1/debian/changelog
--- 0.0.20090923-2/debian/changelog	2010-02-27 23:09:48.000000000 +0000
+++ 0.0.20090923-2ubuntu1/debian/changelog	2010-09-28 12:07:05.000000000 +0100
@@ -1,3 +1,13 @@
+fontforge (0.0.20090923-2ubuntu1) maverick; urgency=low
+
+  * New patch, 910_fix-overlapping-strcpys, adds a new strmove() to use
+    instead of some of the overlapping strcpy() calls in gutils/fsys.c as this
+    breaks on amd64 and causes ttf-freefont to FTBFS.  A different upstream
+    fix is in 0.0.20100501 but is more intrusive to backport and might cause
+    issues on its own.
+
+ -- Loïc Minier <loic.minier at ubuntu.com>  Tue, 28 Sep 2010 03:58:33 +0200
+
 fontforge (0.0.20090923-2) unstable; urgency=low
 
   * Switched to 3.0 (quilt) source format. As a consequence, no longer
diff -pruN 0.0.20090923-2/debian/patches/910_fix-overlapping-strcpys.diff 0.0.20090923-2ubuntu1/debian/patches/910_fix-overlapping-strcpys.diff
--- 0.0.20090923-2/debian/patches/910_fix-overlapping-strcpys.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.0.20090923-2ubuntu1/debian/patches/910_fix-overlapping-strcpys.diff	2010-09-28 02:57:47.000000000 +0100
@@ -0,0 +1,34 @@
+--- a/gutils/fsys.c
++++ b/gutils/fsys.c
+@@ -32,6 +32,14 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>		/* for mkdir */
+ #include <unistd.h>
++#include <string.h>
++
++char *strmove(char *dest, const char *src);
++
++char *strmove(char *dest, const char *src) {
++    memmove(dest, src, strlen(src) + 1);
++    return dest;
++}
+ 
+ #ifdef _WIN32
+ #define MKDIR(A,B) mkdir(A)
+@@ -62,13 +70,13 @@
+ 	    if ( *spt=='/' ) ++spt;
+ 	    for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt );
+ 	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/
+-		strcpy(spt,pt); /*  skipped past the :// of the machine name) */
++		strmove(spt,pt); /*  skipped past the :// of the machine name) */
+ 	    else if ( pt==spt+1 && spt[0]=='.' )	/* Noop */
+-		strcpy(spt,pt);
++		strmove(spt,pt);
+ 	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
+ 		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );
+ 		if ( bpt>=rpt && *bpt=='/' ) {
+-		    strcpy(bpt,pt);
++		    strmove(bpt,pt);
+ 		    spt = bpt;
+ 		} else {
+ 		    rpt = pt;
diff -pruN 0.0.20090923-2/debian/patches/series 0.0.20090923-2ubuntu1/debian/patches/series
--- 0.0.20090923-2/debian/patches/series	2010-02-27 22:53:05.000000000 +0000
+++ 0.0.20090923-2ubuntu1/debian/patches/series	2010-09-28 12:05:15.000000000 +0100
@@ -5,4 +5,4 @@
 024_def_background.diff
 026_fix-null-pntr-dereference.diff
 900_debian_HelpDir_path.diff 
-
+910_fix-overlapping-strcpys.diff
diff -pruN 0.0.20090923-2/gutils/fsys.c 0.0.20090923-2ubuntu1/gutils/fsys.c
--- 0.0.20090923-2/gutils/fsys.c	2009-01-25 18:06:49.000000000 +0000
+++ 0.0.20090923-2ubuntu1/gutils/fsys.c	2010-10-01 10:38:00.000000000 +0100
@@ -32,6 +32,14 @@
 #include <sys/types.h>
 #include <sys/stat.h>		/* for mkdir */
 #include <unistd.h>
+#include <string.h>
+
+char *strmove(char *dest, const char *src);
+
+char *strmove(char *dest, const char *src) {
+    memmove(dest, src, strlen(src) + 1);
+    return dest;
+}
 
 #ifdef _WIN32
 #define MKDIR(A,B) mkdir(A)
@@ -62,13 +70,13 @@ char *GFileGetAbsoluteName(char *name, c
 	    if ( *spt=='/' ) ++spt;
 	    for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt );
 	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/
-		strcpy(spt,pt); /*  skipped past the :// of the machine name) */
+		strmove(spt,pt); /*  skipped past the :// of the machine name) */
 	    else if ( pt==spt+1 && spt[0]=='.' )	/* Noop */
-		strcpy(spt,pt);
+		strmove(spt,pt);
 	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
 		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );
 		if ( bpt>=rpt && *bpt=='/' ) {
-		    strcpy(bpt,pt);
+		    strmove(bpt,pt);
 		    spt = bpt;
 		} else {
 		    rpt = pt;
diff -pruN 0.0.20090923-2/.pc/910_fix-overlapping-strcpys.diff/gutils/fsys.c 0.0.20090923-2ubuntu1/.pc/910_fix-overlapping-strcpys.diff/gutils/fsys.c
--- 0.0.20090923-2/.pc/910_fix-overlapping-strcpys.diff/gutils/fsys.c	1970-01-01 01:00:00.000000000 +0100
+++ 0.0.20090923-2ubuntu1/.pc/910_fix-overlapping-strcpys.diff/gutils/fsys.c	2009-01-25 18:06:49.000000000 +0000
@@ -0,0 +1,481 @@
+/* Copyright (C) 2000-2004 by George Williams */
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include "ustring.h"
+#include "fileutil.h"
+#include "gfile.h"
+#include <sys/types.h>
+#include <sys/stat.h>		/* for mkdir */
+#include <unistd.h>
+
+#ifdef _WIN32
+#define MKDIR(A,B) mkdir(A)
+#else
+#define MKDIR(A,B) mkdir(A,B)
+#endif
+
+static char dirname_[1024];
+
+char *GFileGetAbsoluteName(char *name, char *result, int rsiz) {
+    /* result may be the same as name */
+    char buffer[1000];
+
+    if ( *name!='/' ) {
+	char *pt, *spt, *rpt, *bpt;
+
+	if ( dirname_[0]=='\0' ) {
+	    getcwd(dirname_,sizeof(dirname_));
+	}
+	strcpy(buffer,dirname_);
+	if ( buffer[strlen(buffer)-1]!='/' )
+	    strcat(buffer,"/");
+	strcat(buffer,name);
+
+	/* Normalize out any .. */
+	spt = rpt = buffer;
+	while ( *spt!='\0' ) {
+	    if ( *spt=='/' ) ++spt;
+	    for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt );
+	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/
+		strcpy(spt,pt); /*  skipped past the :// of the machine name) */
+	    else if ( pt==spt+1 && spt[0]=='.' )	/* Noop */
+		strcpy(spt,pt);
+	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
+		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );
+		if ( bpt>=rpt && *bpt=='/' ) {
+		    strcpy(bpt,pt);
+		    spt = bpt;
+		} else {
+		    rpt = pt;
+		    spt = pt;
+		}
+	    } else
+		spt = pt;
+	}
+	name = buffer;
+	if ( rsiz>sizeof(buffer)) rsiz = sizeof(buffer);	/* Else valgrind gets unhappy */
+    }
+    if (result!=name) {
+	strncpy(result,name,rsiz);
+	result[rsiz-1]='\0';
+    }
+return(result);
+}
+
+char *GFileMakeAbsoluteName(char *name) {
+    char buffer[1025];
+
+    GFileGetAbsoluteName(name,buffer,sizeof(buffer));
+return( copy(buffer));
+}
+
+char *GFileBuildName(char *dir,char *fname,char *buffer,int size) {
+    int len;
+
+    if ( dir==NULL || *dir=='\0' ) {
+	if ( strlen( fname )<size-1 )		/* valgrind didn't like my strncpies but this complication makes it happy */
+	    strcpy(buffer,fname);
+	else {
+	    strncpy(buffer,fname,size-1);
+	    buffer[size-1]='\0';
+	}
+    } else {
+	if ( buffer!=dir ) {
+	    if ( strlen( dir )<size-3 )
+		strcpy(buffer,dir);
+	    else {
+		strncpy(buffer,dir,size-3);
+		buffer[size-3]='\0';
+	    }
+	}
+	len = strlen(buffer);
+	if ( buffer[len-1]!='/' )
+	    buffer[len++] = '/';
+	if ( strlen( fname )<size-1 )
+	    strcpy(buffer+len,fname);
+	else {
+	    strncpy(buffer+len,fname,size-len-1);
+	    buffer[size-1]='\0';
+	}
+    }
+return( buffer );
+}
+
+/* Given a filename in a directory, pick the directory out of it, and */
+/*  create a new filename using that directory and the given nametail */
+char *GFileReplaceName(char *oldname,char *fname,char *buffer,int size) {
+    int len;
+    char *dirend;
+
+    dirend = strrchr(oldname,'/');
+    if ( dirend == NULL ) {
+	strncpy(buffer,fname,size-1);
+	buffer[size-1]='\0';
+    } else {
+	*dirend = '\0';
+	if ( buffer!=oldname ) {
+	    strncpy(buffer,oldname,size-3);
+	    buffer[size-3]='\0';
+	}
+	len = strlen(buffer);
+	*dirend = '/';
+	buffer[len++] = '/';
+	strncpy(buffer+len,fname,size-len-1);
+	buffer[size-1]='\0';
+    }
+return( buffer );
+}
+
+char *GFileNameTail(const char *oldname) {
+    char *pt;
+
+    pt = strrchr(oldname,'/');
+    if ( pt !=NULL )
+return( pt+1);
+    else
+return( (char *)oldname );
+}
+
+char *GFileAppendFile(char *dir,char *name,int isdir) {
+    char *ret, *pt;
+
+    ret = galloc((strlen(dir)+strlen(name)+3));
+    strcpy(ret,dir);
+    pt = ret+strlen(ret);
+    if ( pt>ret && pt[-1]!='/' )
+	*pt++ = '/';
+    strcpy(pt,name);
+    if ( isdir ) {
+	pt += strlen(pt);
+	if ( pt>ret && pt[-1]!='/' ) {
+	    *pt++ = '/';
+	    *pt = '\0';
+	}
+    }
+return(ret);
+}
+
+int GFileIsAbsolute(const char *file) {
+    if ( *file=='/' )
+return( true );
+    if ( strstr(file,"://")!=NULL )
+return( true );
+
+return( false );
+}
+
+int GFileIsDir(const char *file) {
+  struct stat info;
+  if ( stat(file, &info)==-1 )
+return 0;     
+  else
+return( S_ISDIR(info.st_mode) );
+}
+
+int GFileExists(const char *file) {
+return( access(file,0)==0 );
+}
+
+int GFileModifyable(const char *file) {
+return( access(file,02)==0 );
+}
+
+int GFileModifyableDir(const char *file) {
+    char buffer[1024], *pt;
+
+    strcpy(buffer,file);
+    pt = strrchr(buffer,'/');
+    if ( pt==NULL )
+	strcpy(buffer,".");
+    else
+	*pt='\0';
+return( GFileModifyable(buffer));
+}
+
+int GFileReadable(char *file) {
+return( access(file,04)==0 );
+}
+
+int GFileMkDir(char *name) {
+return( MKDIR(name,0755));
+}
+
+int GFileRmDir(char *name) {
+return(rmdir(name));
+}
+
+int GFileUnlink(char *name) {
+return(unlink(name));
+}
+
+char *_GFile_find_program_dir(char *prog) {
+    char *pt, *path, *program_dir=NULL;
+    char filename[2000];
+
+    if ( (pt = strrchr(prog,'/'))!=NULL )
+	program_dir = copyn(prog,pt-prog);
+    else if ( (path = getenv("PATH"))!=NULL ) {
+	while ((pt = strchr(path,':'))!=NULL ) {
+	  sprintf(filename,"%.*s/%s", (int)(pt-path), path, prog);
+	    /* Under cygwin, applying access to "potrace" will find "potrace.exe" */
+	    /*  no need for special check to add ".exe" */
+	    if ( access(filename,1)!= -1 ) {
+		program_dir = copyn(path,pt-path);
+	break;
+	    }
+	    path = pt+1;
+	}
+	if ( program_dir==NULL ) {
+	    sprintf(filename,"%s/%s", path, prog);
+	    if ( access(filename,1)!= -1 )
+		program_dir = copy(path);
+	}
+    }
+    if ( program_dir==NULL )
+return( NULL );
+    GFileGetAbsoluteName(program_dir,filename,sizeof(filename));
+    gfree(program_dir);
+    program_dir = copy(filename);
+return( program_dir );
+}
+
+unichar_t *u_GFileGetAbsoluteName(unichar_t *name, unichar_t *result, int rsiz) {
+    /* result may be the same as name */
+    unichar_t buffer[1000];
+
+    if ( *name!='/' ) {
+	unichar_t *pt, *spt, *rpt, *bpt;
+
+	if ( dirname_[0]=='\0' ) {
+	    getcwd(dirname_,sizeof(dirname_));
+	}
+	uc_strcpy(buffer,dirname_);
+	if ( buffer[u_strlen(buffer)-1]!='/' )
+	    uc_strcat(buffer,"/");
+	u_strcat(buffer,name);
+
+	/* Normalize out any .. */
+	spt = rpt = buffer;
+	while ( *spt!='\0' ) {
+	    if ( *spt=='/' ) ++spt;
+	    for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt );
+	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/
+		u_strcpy(spt,pt); /*  skipped past the :// of the machine name) */
+	    else if ( pt==spt+1 && spt[0]=='.' )	/* Noop */
+		u_strcpy(spt,pt);
+	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {
+		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );
+		if ( bpt>=rpt && *bpt=='/' ) {
+		    u_strcpy(bpt,pt);
+		    spt = bpt;
+		} else {
+		    rpt = pt;
+		    spt = pt;
+		}
+	    } else
+		spt = pt;
+	}
+	name = buffer;
+    }
+    if (result!=name) {
+	u_strncpy(result,name,rsiz);
+	result[rsiz-1]='\0';
+    }
+return(result);
+}
+
+unichar_t *u_GFileBuildName(unichar_t *dir,unichar_t *fname,unichar_t *buffer,int size) {
+    int len;
+
+    if ( dir==NULL || *dir=='\0' ) {
+	u_strncpy(buffer,fname,size-1);
+	buffer[size-1]='\0';
+    } else {
+	if ( buffer!=dir ) {
+	    u_strncpy(buffer,dir,size-3);
+	    buffer[size-3]='\0';
+	}
+	len = u_strlen(buffer);
+	if ( buffer[len-1]!='/' )
+	    buffer[len++] = '/';
+	u_strncpy(buffer+len,fname,size-len-1);
+	buffer[size-1]='\0';
+    }
+return( buffer );
+}
+
+/* Given a filename in a directory, pick the directory out of it, and */
+/*  create a new filename using that directory and the given nametail */
+unichar_t *u_GFileReplaceName(unichar_t *oldname,unichar_t *fname,unichar_t *buffer,int size) {
+    int len;
+    unichar_t *dirend;
+
+    dirend = u_strrchr(oldname,'/');
+    if ( dirend == NULL ) {
+	u_strncpy(buffer,fname,size-1);
+	buffer[size-1]='\0';
+    } else {
+	*dirend = '\0';
+	if ( buffer!=oldname ) {
+	    u_strncpy(buffer,oldname,size-3);
+	    buffer[size-3]='\0';
+	}
+	len = u_strlen(buffer);
+	*dirend = '/';
+	buffer[len++] = '/';
+	u_strncpy(buffer+len,fname,size-len-1);
+	buffer[size-1]='\0';
+    }
+return( buffer );
+}
+
+unichar_t *u_GFileNameTail(const unichar_t *oldname) {
+    unichar_t *pt;
+
+    pt = u_strrchr(oldname,'/');
+    if ( pt !=NULL )
+return( pt+1);
+    else
+return( (unichar_t *)oldname );
+}
+
+unichar_t *u_GFileNormalize(unichar_t *name) {
+    unichar_t *pt, *base, *ppt;
+
+    if ( (pt = uc_strstr(name,"://"))!=NULL ) {
+	base = u_strchr(pt+3,'/');
+	if ( base==NULL )
+return( name );
+	++base;
+    } else if ( *name=='/' )
+	base = name+1;
+    else
+	base = name;
+    for ( pt=base; *pt!='\0'; ) {
+	if ( *pt=='/' )
+	    u_strcpy(pt,pt+1);
+	else if ( uc_strncmp(pt,"./",2)==0 )
+	    u_strcpy(pt,pt+2);
+	else if ( uc_strncmp(pt,"../",2)==0 ) {
+	    for ( ppt=pt-2; ppt>=base && *ppt!='/'; --ppt );
+	    ++ppt;
+	    if ( ppt>=base ) {
+		u_strcpy(ppt,pt+3);
+		pt = ppt;
+	    } else
+		pt += 3;
+	} else {
+	    while ( *pt!='/' && *pt!='\0' ) ++pt;
+	    if ( *pt == '/' ) ++pt;
+	}
+    }
+return( name );
+}
+
+unichar_t *u_GFileAppendFile(unichar_t *dir,unichar_t *name,int isdir) {
+    unichar_t *ret, *pt;
+
+    ret = galloc((u_strlen(dir)+u_strlen(name)+3)*sizeof(unichar_t));
+    u_strcpy(ret,dir);
+    pt = ret+u_strlen(ret);
+    if ( pt>ret && pt[-1]!='/' )
+	*pt++ = '/';
+    u_strcpy(pt,name);
+    if ( isdir ) {
+	pt += u_strlen(pt);
+	if ( pt>ret && pt[-1]!='/' ) {
+	    *pt++ = '/';
+	    *pt = '\0';
+	}
+    }
+return(ret);
+}
+
+int u_GFileIsAbsolute(const unichar_t *file) {
+    if ( *file=='/' )
+return( true );
+    if ( uc_strstr(file,"://")!=NULL )
+return( true );
+
+return( false );
+}
+
+int u_GFileIsDir(const unichar_t *file) {
+    char buffer[1024];
+    u2def_strncpy(buffer,file,sizeof(buffer));
+    strcat(buffer,"/.");
+return( access(buffer,0)==0 );
+}
+
+int u_GFileExists(const unichar_t *file) {
+    char buffer[1024];
+    u2def_strncpy(buffer,file,sizeof(buffer));
+return( access(buffer,0)==0 );
+}
+
+int u_GFileModifyable(const unichar_t *file) {
+    char buffer[1024];
+    u2def_strncpy(buffer,file,sizeof(buffer));
+return( access(buffer,02)==0 );
+}
+
+int u_GFileModifyableDir(const unichar_t *file) {
+    char buffer[1024], *pt;
+
+    u2def_strncpy(buffer,file,sizeof(buffer));
+    pt = strrchr(buffer,'/');
+    if ( pt==NULL )
+	strcpy(buffer,".");
+    else
+	*pt='\0';
+return( GFileModifyable(buffer));
+}
+
+int u_GFileReadable(unichar_t *file) {
+    char buffer[1024];
+    u2def_strncpy(buffer,file,sizeof(buffer));
+return( access(buffer,04)==0 );
+}
+
+int u_GFileMkDir(unichar_t *name) {
+    char buffer[1024];
+    u2def_strncpy(buffer,name,sizeof(buffer));
+return( MKDIR(buffer,0755));
+}
+
+int u_GFileRmDir(unichar_t *name) {
+    char buffer[1024];
+    u2def_strncpy(buffer,name,sizeof(buffer));
+return(rmdir(buffer));
+}
+
+int u_GFileUnlink(unichar_t *name) {
+    char buffer[1024];
+    u2def_strncpy(buffer,name,sizeof(buffer));
+return(unlink(buffer));
+}
diff -pruN 0.0.20090923-2/.pc/applied-patches 0.0.20090923-2ubuntu1/.pc/applied-patches
--- 0.0.20090923-2/.pc/applied-patches	2010-10-01 10:38:02.000000000 +0100
+++ 0.0.20090923-2ubuntu1/.pc/applied-patches	2010-10-01 10:38:00.000000000 +0100
@@ -5,3 +5,4 @@
 024_def_background.diff
 026_fix-null-pntr-dereference.diff
 900_debian_HelpDir_path.diff
+910_fix-overlapping-strcpys.diff


More information about the Pkg-fonts-bugs mailing list