diff options
-rw-r--r-- | packages/krb/files/fix-uclibc-ruserpass-collision.patch | 673 | ||||
-rw-r--r-- | packages/krb/krb5_1.6.3.bb | 10 |
2 files changed, 679 insertions, 4 deletions
diff --git a/packages/krb/files/fix-uclibc-ruserpass-collision.patch b/packages/krb/files/fix-uclibc-ruserpass-collision.patch new file mode 100644 index 0000000000..b98baf93e3 --- /dev/null +++ b/packages/krb/files/fix-uclibc-ruserpass-collision.patch @@ -0,0 +1,673 @@ +diff -urN src.old//appl/gssftp/ftp/ftp.c src//appl/gssftp/ftp/ftp.c +--- src.old//appl/gssftp/ftp/ftp.c 2006-10-15 09:43:30.000000000 +0100 ++++ src//appl/gssftp/ftp/ftp.c 2009-01-26 18:55:18.300386663 +0000 +@@ -327,7 +327,7 @@ + int n, aflag = 0; + + l_user = pass = l_acct = 0; +- if (ruserpass(host, &l_user, &pass, &l_acct) < 0) { ++ if (rkuserpass(host, &l_user, &pass, &l_acct) < 0) { + code = -1; + return(0); + } +diff -urN src.old//appl/gssftp/ftp/ftp_var.h src//appl/gssftp/ftp/ftp_var.h +--- src.old//appl/gssftp/ftp/ftp_var.h 2003-06-16 20:02:01.000000000 +0100 ++++ src//appl/gssftp/ftp/ftp_var.h 2009-01-26 18:55:30.484695949 +0000 +@@ -270,8 +270,8 @@ + struct cmd *getcmd (char *); + + +-/* ruserpass.c */ +-int ruserpass (char *, char **, char **, char **); ++/* rkuserpass.c */ ++int rkuserpass (char *, char **, char **, char **); + + /* radix.h */ + int radix_encode (unsigned char *, unsigned char *, int *, int); +diff -urN src.old//appl/gssftp/ftp/Makefile.in src//appl/gssftp/ftp/Makefile.in +--- src.old//appl/gssftp/ftp/Makefile.in 2006-12-19 00:12:32.000000000 +0000 ++++ src//appl/gssftp/ftp/Makefile.in 2009-01-26 18:55:57.322361169 +0000 +@@ -12,14 +12,14 @@ + SRCS = $(srcdir)/cmds.c $(srcdir)/cmdtab.c $(srcdir)/domacro.c \ + $(srcdir)/ftp.c $(srcdir)/getpass.c $(srcdir)/glob.c \ + $(srcdir)/main.c $(srcdir)/radix.c \ +- $(srcdir)/ruserpass.c $(srcdir)/secure.c ++ $(srcdir)/rkuserpass.c $(srcdir)/secure.c + + + OBJS = $(OUTPRE)cmds.$(OBJEXT) $(OUTPRE)cmdtab.$(OBJEXT) \ + $(OUTPRE)domacro.$(OBJEXT) $(OUTPRE)ftp.$(OBJEXT) \ + $(OUTPRE)getpass.$(OBJEXT) $(OUTPRE)glob.$(OBJEXT) \ + $(OUTPRE)main.$(OBJEXT) $(OUTPRE)radix.$(OBJEXT) \ +- $(OUTPRE)ruserpass.$(OBJEXT) $(OUTPRE)secure.$(OBJEXT) ++ $(OUTPRE)rkuserpass.$(OBJEXT) $(OUTPRE)secure.$(OBJEXT) + + LOCALINCLUDES = -I$(srcdir)/.. -I$(srcdir) @KRB4_INCLUDES@ + +@@ -54,7 +54,7 @@ + done + + ftp.o cmds.o main.o: $(srcdir)/../arpa/ftp.h +-ftp.o cmds.o cmdtab.o domacro.o main.o ruserpass.o: $(srcdir)/ftp_var.h ++ftp.o cmds.o cmdtab.o domacro.o main.o rkuserpass.o: $(srcdir)/ftp_var.h + secure.o: secure.h + + cmds.o: $(srcdir)/cmds.c +@@ -64,7 +64,7 @@ + glob.o: $(srcdir)/glob.c + main.o: $(srcdir)/main.c + pclose.o: $(srcdir)/pclose.c +-ruserpass.o: $(srcdir)/ruserpass.c ++rkuserpass.o: $(srcdir)/rkuserpass.c + domacro.o: $(srcdir)/domacro.c + radix.o: $(srcdir)/radix.c + secure.o: $(srcdir)/secure.c +@@ -96,7 +96,7 @@ + $(SRCTOP)/include/port-sockets.h $(srcdir)/../arpa/ftp.h \ + ftp_var.h main.c + $(OUTPRE)radix.$(OBJEXT): ftp_var.h radix.c +-$(OUTPRE)ruserpass.$(OBJEXT): ftp_var.h ruserpass.c ++$(OUTPRE)rkuserpass.$(OBJEXT): ftp_var.h rkuserpass.c + $(OUTPRE)secure.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ + $(BUILDTOP)/include/gssapi/gssapi.h $(BUILDTOP)/include/gssapi/gssapi_generic.h \ + $(KRB_ERR_H_DEP) $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) \ +diff -urN src.old//appl/gssftp/ftp/rkuserpass.c src//appl/gssftp/ftp/rkuserpass.c +--- src.old//appl/gssftp/ftp/rkuserpass.c 1970-01-01 01:00:00.000000000 +0100 ++++ src//appl/gssftp/ftp/rkuserpass.c 2009-01-26 18:54:57.899256052 +0000 +@@ -0,0 +1,296 @@ ++/* ++ * Copyright (c) 1985 Regents of the University of California. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. ++ */ ++ ++#ifndef lint ++static char sccsid[] = "@(#)rkuserpass.c 5.3 (Berkeley) 3/1/91"; ++#endif /* not lint */ ++ ++#include <sys/types.h> ++#include <stdio.h> ++#include <string.h> ++#ifdef HAVE_STDLIB_H ++#include <stdlib.h> ++#endif ++#ifdef HAVE_UNISTD_H ++#include <unistd.h> ++#endif ++#include <ctype.h> ++#include <sys/stat.h> ++#include <errno.h> ++#include "ftp_var.h" ++ ++#ifdef _WIN32 ++#include <win-mac.h> ++#endif ++ ++#ifndef MAXHOSTNAMELEN ++#define MAXHOSTNAMELEN 64 ++#endif ++ ++static int token (void); ++static FILE *cfile; ++ ++#define DEFAULT 1 ++#define LOGIN 2 ++#define PASSWD 3 ++#define ACCOUNT 4 ++#define MACDEF 5 ++#define ID 10 ++#define MACH 11 ++ ++static char tokval[100]; ++ ++static struct toktab { ++ char *tokstr; ++ int tval; ++} toktab[]= { ++ { "default", DEFAULT }, ++ { "login", LOGIN }, ++ { "password", PASSWD }, ++ { "passwd", PASSWD }, ++ { "account", ACCOUNT }, ++ { "machine", MACH }, ++ { "macdef", MACDEF }, ++ { NULL, 0 } ++}; ++ ++ ++static int ++token() ++{ ++ char *cp; ++ int c; ++ struct toktab *t; ++ ++ if (feof(cfile)) ++ return (0); ++ while ((c = getc(cfile)) != EOF && ++ (c == '\n' || c == '\t' || c == ' ' || c == ',')) ++ continue; ++ if (c == EOF) ++ return (0); ++ cp = tokval; ++ if (c == '"') { ++ while ((c = getc(cfile)) != EOF && c != '"') { ++ if (c == '\\') ++ c = getc(cfile); ++ *cp++ = c; ++ } ++ } else { ++ *cp++ = c; ++ while ((c = getc(cfile)) != EOF ++ && c != '\n' && c != '\t' && c != ' ' && c != ',') { ++ if (c == '\\') ++ c = getc(cfile); ++ *cp++ = c; ++ } ++ } ++ *cp = 0; ++ if (tokval[0] == 0) ++ return (0); ++ for (t = toktab; t->tokstr; t++) ++ if (!strcmp(t->tokstr, tokval)) ++ return (t->tval); ++ return (ID); ++} ++ ++int ++rkuserpass(host, aname, apass, aacct) ++ char *host, **aname, **apass, **aacct; ++{ ++ char *hdir, buf[FTP_BUFSIZ], *tmp; ++ char myname[MAXHOSTNAMELEN + 1], *mydomain; ++ int t, i, c, usedefault = 0; ++ struct stat stb; ++ ++ hdir = getenv("HOME"); ++ if (hdir == NULL) ++ hdir = "."; ++ (void) sprintf(buf, "%s/.netrc", hdir); ++ cfile = fopen(buf, "r"); ++ if (cfile == NULL) { ++ if (errno != ENOENT) ++ perror(buf); ++ return(0); ++ } ++ if (gethostname(myname, sizeof(myname)) < 0) ++ myname[0] = '\0'; ++ if ((mydomain = strchr(myname, '.')) == NULL) ++ mydomain = ""; ++next: ++ while ((t = token())) switch(t) { ++ ++ case DEFAULT: ++ usedefault = 1; ++ /* FALL THROUGH */ ++ ++ case MACH: ++ if (!usedefault) { ++ if (token() != ID) ++ continue; ++ /* ++ * Allow match either for user's input host name ++ * or official hostname. Also allow match of ++ * incompletely-specified host in local domain. ++ */ ++ if (strcasecmp(host, tokval) == 0) ++ goto match; ++ if (strcasecmp(hostname, tokval) == 0) ++ goto match; ++ if ((tmp = strchr(hostname, '.')) != NULL && ++ strcasecmp(tmp, mydomain) == 0 && ++ strncasecmp(hostname, tokval, ++ (unsigned) (tmp-hostname)) == 0 && ++ tokval[tmp - hostname] == '\0') ++ goto match; ++ if ((tmp = strchr(host, '.')) != NULL && ++ strcasecmp(tmp, mydomain) == 0 && ++ strncasecmp(host, tokval, ++ (unsigned ) (tmp - host)) == 0 && ++ tokval[tmp - host] == '\0') ++ goto match; ++ continue; ++ } ++ match: ++ while ((t = token()) && t != MACH && t != DEFAULT) switch(t) { ++ ++ case LOGIN: ++ if (token()) { ++ if (*aname == 0) { ++ *aname = malloc((unsigned) strlen(tokval) + 1); ++ (void) strcpy(*aname, tokval); ++ } else { ++ if (strcmp(*aname, tokval)) ++ goto next; ++ } ++ } ++ break; ++ case PASSWD: ++ if (strcmp(*aname, "anonymous") && ++ fstat(fileno(cfile), &stb) >= 0 && ++ (stb.st_mode & 077) != 0) { ++ fprintf(stderr, "Error - .netrc file not correct mode.\n"); ++ fprintf(stderr, "Remove password or correct mode.\n"); ++ goto bad; ++ } ++ if (token() && *apass == 0) { ++ *apass = malloc((unsigned) strlen(tokval) + 1); ++ (void) strcpy(*apass, tokval); ++ } ++ break; ++ case ACCOUNT: ++ if (fstat(fileno(cfile), &stb) >= 0 ++ && (stb.st_mode & 077) != 0) { ++ fprintf(stderr, "Error - .netrc file not correct mode.\n"); ++ fprintf(stderr, "Remove account or correct mode.\n"); ++ goto bad; ++ } ++ if (token() && *aacct == 0) { ++ *aacct = malloc((unsigned) strlen(tokval) + 1); ++ (void) strcpy(*aacct, tokval); ++ } ++ break; ++ case MACDEF: ++ if (proxy) { ++ (void) fclose(cfile); ++ return(0); ++ } ++ while ((c = getc(cfile)) != EOF) ++ if (c != ' ' && c != '\t') ++ break; ++ if (c == EOF || c == '\n') { ++ printf("Missing macdef name argument.\n"); ++ goto bad; ++ } ++ if (macnum == 16) { ++ printf("Limit of 16 macros have already been defined\n"); ++ goto bad; ++ } ++ tmp = macros[macnum].mac_name; ++ *tmp++ = c; ++ for (i=0; i < 8 && (c=getc(cfile)) != EOF && ++ !isspace(c); ++i) { ++ *tmp++ = c; ++ } ++ if (c == EOF) { ++ printf("Macro definition missing null line terminator.\n"); ++ goto bad; ++ } ++ *tmp = '\0'; ++ if (c != '\n') { ++ while ((c=getc(cfile)) != EOF && c != '\n'); ++ } ++ if (c == EOF) { ++ printf("Macro definition missing null line terminator.\n"); ++ goto bad; ++ } ++ if (macnum == 0) { ++ macros[macnum].mac_start = macbuf; ++ } ++ else { ++ macros[macnum].mac_start = macros[macnum-1].mac_end + 1; ++ } ++ tmp = macros[macnum].mac_start; ++ while (tmp != macbuf + 4096) { ++ if ((c=getc(cfile)) == EOF) { ++ printf("Macro definition missing null line terminator.\n"); ++ goto bad; ++ } ++ *tmp = c; ++ if (*tmp == '\n') { ++ if (*(tmp-1) == '\0') { ++ macros[macnum++].mac_end = tmp - 1; ++ break; ++ } ++ *tmp = '\0'; ++ } ++ tmp++; ++ } ++ if (tmp == macbuf + 4096) { ++ printf("4K macro buffer exceeded\n"); ++ goto bad; ++ } ++ break; ++ default: ++ fprintf(stderr, "Unknown .netrc keyword %s\n", tokval); ++ break; ++ } ++ goto done; ++ } ++done: ++ (void) fclose(cfile); ++ return(0); ++bad: ++ (void) fclose(cfile); ++ return(-1); ++} +diff -urN src.old//appl/gssftp/ftp/ruserpass.c src//appl/gssftp/ftp/ruserpass.c +--- src.old//appl/gssftp/ftp/ruserpass.c 2001-10-10 04:18:22.000000000 +0100 ++++ src//appl/gssftp/ftp/ruserpass.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,296 +0,0 @@ +-/* +- * Copyright (c) 1985 Regents of the University of California. +- * All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions +- * are met: +- * 1. Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * 2. 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. +- * 3. All advertising materials mentioning features or use of this software +- * must display the following acknowledgement: +- * This product includes software developed by the University of +- * California, Berkeley and its contributors. +- * 4. Neither the name of the University nor the names of its contributors +- * may be used to endorse or promote products derived from this software +- * without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. +- */ +- +-#ifndef lint +-static char sccsid[] = "@(#)ruserpass.c 5.3 (Berkeley) 3/1/91"; +-#endif /* not lint */ +- +-#include <sys/types.h> +-#include <stdio.h> +-#include <string.h> +-#ifdef HAVE_STDLIB_H +-#include <stdlib.h> +-#endif +-#ifdef HAVE_UNISTD_H +-#include <unistd.h> +-#endif +-#include <ctype.h> +-#include <sys/stat.h> +-#include <errno.h> +-#include "ftp_var.h" +- +-#ifdef _WIN32 +-#include <win-mac.h> +-#endif +- +-#ifndef MAXHOSTNAMELEN +-#define MAXHOSTNAMELEN 64 +-#endif +- +-static int token (void); +-static FILE *cfile; +- +-#define DEFAULT 1 +-#define LOGIN 2 +-#define PASSWD 3 +-#define ACCOUNT 4 +-#define MACDEF 5 +-#define ID 10 +-#define MACH 11 +- +-static char tokval[100]; +- +-static struct toktab { +- char *tokstr; +- int tval; +-} toktab[]= { +- { "default", DEFAULT }, +- { "login", LOGIN }, +- { "password", PASSWD }, +- { "passwd", PASSWD }, +- { "account", ACCOUNT }, +- { "machine", MACH }, +- { "macdef", MACDEF }, +- { NULL, 0 } +-}; +- +- +-static int +-token() +-{ +- char *cp; +- int c; +- struct toktab *t; +- +- if (feof(cfile)) +- return (0); +- while ((c = getc(cfile)) != EOF && +- (c == '\n' || c == '\t' || c == ' ' || c == ',')) +- continue; +- if (c == EOF) +- return (0); +- cp = tokval; +- if (c == '"') { +- while ((c = getc(cfile)) != EOF && c != '"') { +- if (c == '\\') +- c = getc(cfile); +- *cp++ = c; +- } +- } else { +- *cp++ = c; +- while ((c = getc(cfile)) != EOF +- && c != '\n' && c != '\t' && c != ' ' && c != ',') { +- if (c == '\\') +- c = getc(cfile); +- *cp++ = c; +- } +- } +- *cp = 0; +- if (tokval[0] == 0) +- return (0); +- for (t = toktab; t->tokstr; t++) +- if (!strcmp(t->tokstr, tokval)) +- return (t->tval); +- return (ID); +-} +- +-int +-ruserpass(host, aname, apass, aacct) +- char *host, **aname, **apass, **aacct; +-{ +- char *hdir, buf[FTP_BUFSIZ], *tmp; +- char myname[MAXHOSTNAMELEN + 1], *mydomain; +- int t, i, c, usedefault = 0; +- struct stat stb; +- +- hdir = getenv("HOME"); +- if (hdir == NULL) +- hdir = "."; +- (void) sprintf(buf, "%s/.netrc", hdir); +- cfile = fopen(buf, "r"); +- if (cfile == NULL) { +- if (errno != ENOENT) +- perror(buf); +- return(0); +- } +- if (gethostname(myname, sizeof(myname)) < 0) +- myname[0] = '\0'; +- if ((mydomain = strchr(myname, '.')) == NULL) +- mydomain = ""; +-next: +- while ((t = token())) switch(t) { +- +- case DEFAULT: +- usedefault = 1; +- /* FALL THROUGH */ +- +- case MACH: +- if (!usedefault) { +- if (token() != ID) +- continue; +- /* +- * Allow match either for user's input host name +- * or official hostname. Also allow match of +- * incompletely-specified host in local domain. +- */ +- if (strcasecmp(host, tokval) == 0) +- goto match; +- if (strcasecmp(hostname, tokval) == 0) +- goto match; +- if ((tmp = strchr(hostname, '.')) != NULL && +- strcasecmp(tmp, mydomain) == 0 && +- strncasecmp(hostname, tokval, +- (unsigned) (tmp-hostname)) == 0 && +- tokval[tmp - hostname] == '\0') +- goto match; +- if ((tmp = strchr(host, '.')) != NULL && +- strcasecmp(tmp, mydomain) == 0 && +- strncasecmp(host, tokval, +- (unsigned ) (tmp - host)) == 0 && +- tokval[tmp - host] == '\0') +- goto match; +- continue; +- } +- match: +- while ((t = token()) && t != MACH && t != DEFAULT) switch(t) { +- +- case LOGIN: +- if (token()) { +- if (*aname == 0) { +- *aname = malloc((unsigned) strlen(tokval) + 1); +- (void) strcpy(*aname, tokval); +- } else { +- if (strcmp(*aname, tokval)) +- goto next; +- } +- } +- break; +- case PASSWD: +- if (strcmp(*aname, "anonymous") && +- fstat(fileno(cfile), &stb) >= 0 && +- (stb.st_mode & 077) != 0) { +- fprintf(stderr, "Error - .netrc file not correct mode.\n"); +- fprintf(stderr, "Remove password or correct mode.\n"); +- goto bad; +- } +- if (token() && *apass == 0) { +- *apass = malloc((unsigned) strlen(tokval) + 1); +- (void) strcpy(*apass, tokval); +- } +- break; +- case ACCOUNT: +- if (fstat(fileno(cfile), &stb) >= 0 +- && (stb.st_mode & 077) != 0) { +- fprintf(stderr, "Error - .netrc file not correct mode.\n"); +- fprintf(stderr, "Remove account or correct mode.\n"); +- goto bad; +- } +- if (token() && *aacct == 0) { +- *aacct = malloc((unsigned) strlen(tokval) + 1); +- (void) strcpy(*aacct, tokval); +- } +- break; +- case MACDEF: +- if (proxy) { +- (void) fclose(cfile); +- return(0); +- } +- while ((c = getc(cfile)) != EOF) +- if (c != ' ' && c != '\t') +- break; +- if (c == EOF || c == '\n') { +- printf("Missing macdef name argument.\n"); +- goto bad; +- } +- if (macnum == 16) { +- printf("Limit of 16 macros have already been defined\n"); +- goto bad; +- } +- tmp = macros[macnum].mac_name; +- *tmp++ = c; +- for (i=0; i < 8 && (c=getc(cfile)) != EOF && +- !isspace(c); ++i) { +- *tmp++ = c; +- } +- if (c == EOF) { +- printf("Macro definition missing null line terminator.\n"); +- goto bad; +- } +- *tmp = '\0'; +- if (c != '\n') { +- while ((c=getc(cfile)) != EOF && c != '\n'); +- } +- if (c == EOF) { +- printf("Macro definition missing null line terminator.\n"); +- goto bad; +- } +- if (macnum == 0) { +- macros[macnum].mac_start = macbuf; +- } +- else { +- macros[macnum].mac_start = macros[macnum-1].mac_end + 1; +- } +- tmp = macros[macnum].mac_start; +- while (tmp != macbuf + 4096) { +- if ((c=getc(cfile)) == EOF) { +- printf("Macro definition missing null line terminator.\n"); +- goto bad; +- } +- *tmp = c; +- if (*tmp == '\n') { +- if (*(tmp-1) == '\0') { +- macros[macnum++].mac_end = tmp - 1; +- break; +- } +- *tmp = '\0'; +- } +- tmp++; +- } +- if (tmp == macbuf + 4096) { +- printf("4K macro buffer exceeded\n"); +- goto bad; +- } +- break; +- default: +- fprintf(stderr, "Unknown .netrc keyword %s\n", tokval); +- break; +- } +- goto done; +- } +-done: +- (void) fclose(cfile); +- return(0); +-bad: +- (void) fclose(cfile); +- return(-1); +-} diff --git a/packages/krb/krb5_1.6.3.bb b/packages/krb/krb5_1.6.3.bb index c77c606eb5..b13e5f15b1 100644 --- a/packages/krb/krb5_1.6.3.bb +++ b/packages/krb/krb5_1.6.3.bb @@ -1,19 +1,20 @@ DESCRIPTION = "A network authentication protocol" HOMEPAGE = "http://web.mit.edu/Kerberos/" SECTION = "console/network" -PR = "r3" +PR = "r4" LICENSE = "MIT" DEPENDS = "perl-native ncurses e2fsprogs-libs" inherit autotools binconfig -SRC_URI = "http://web.mit.edu/kerberos/dist/krb5/1.6/krb5-1.6.3-signed.tar" +SRC_URI = "http://web.mit.edu/kerberos/dist/krb5/1.6/krb5-1.6.3-signed.tar \ + file://fix-uclibc-ruserpass-collision.patch" S = "${WORKDIR}/${PN}-${PV}/src/" # Will clean this up... EXTRA_OECONF += " krb5_cv_attr_constructor_destructor=yes ac_cv_func_regcomp=yes \ - ac_cv_printf_positional=yes ac_cv_file__etc_environment=yes \ - ac_cv_file__etc_TIMEZONE=no --with-system-et" + ac_cv_printf_positional=yes ac_cv_file__etc_environment=yes \ + ac_cv_file__etc_TIMEZONE=no --with-system-et" CFLAGS_append += "-DDESTRUCTOR_ATTR_WORKS=1 -I${STAGING_INCDIR}/et" LDFLAGS_append += "-lpthread" @@ -21,6 +22,7 @@ FILES_${PN}-doc += /usr/share/examples do_configure() { tar xzf ${WORKDIR}/krb5-1.6.3.tar.gz -C ${WORKDIR}/ + patch -p1 < ${WORKDIR}/fix-uclibc-ruserpass-collision.patch oe_runconf } |