From df58e028c0cf387607004ee502299d06ee56ec2b Mon Sep 17 00:00:00 2001 From: Michal Ambroz Date: Apr 23 2020 15:40:15 +0000 Subject: Merge remote-tracking branch 'origin/master' into epel8 --- diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 --- a/.cvsignore +++ /dev/null diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8ffb1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +afpfs-ng-0.8.1.tar.bz2 diff --git a/Makefile b/Makefile deleted file mode 100644 index a383a89..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: afpfs-ng -# $Id$ -NAME := afpfs-ng -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/afpfs-ng-0.8.1-formatsec.patch b/afpfs-ng-0.8.1-formatsec.patch new file mode 100644 index 0000000..22527b3 --- /dev/null +++ b/afpfs-ng-0.8.1-formatsec.patch @@ -0,0 +1,159 @@ +From 2c76660566d026d430305231e72c259372de4380 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 4 Dec 2013 23:17:10 +0100 +Subject: [PATCH] Fix build with -Werror=format-security + +Fedora, starting with version 21, will enable this flag in order to limit +potentially insecure uses of format strings. It is required for format strings +to be constant now. +--- + cmdline/cmdline_afp.c | 4 ++-- + cmdline/cmdline_testafp.c | 12 ++++++------ + fuse/client.c | 5 +---- + fuse/commands.c | 4 ++-- + lib/afp_url.c | 12 ++++++------ + 5 files changed, 17 insertions(+), 20 deletions(-) + +diff --git a/cmdline/cmdline_afp.c b/cmdline/cmdline_afp.c +index 827150b..59f0977 100644 +--- a/cmdline/cmdline_afp.c ++++ b/cmdline/cmdline_afp.c +@@ -828,11 +828,11 @@ int com_status(char * arg) + char text[40960]; + + afp_status_header(text,&len); +- printf(text); ++ printf("%s", text); + + len=40960; + afp_status_server(server,text,&len); +- printf(text); ++ printf("%s", text); + return 0; + } + +diff --git a/cmdline/cmdline_testafp.c b/cmdline/cmdline_testafp.c +index c40f2bd..f887aec 100644 +--- a/cmdline/cmdline_testafp.c ++++ b/cmdline/cmdline_testafp.c +@@ -26,12 +26,12 @@ static int test_one_url(char * url_string, + struct afp_url valid_url; + afp_default_url(&valid_url); + valid_url.protocol=protocol; +- sprintf(valid_url.servername,servername); +- sprintf(valid_url.volumename,volumename); +- sprintf(valid_url.path,path); +- sprintf(valid_url.username,username); +- sprintf(valid_url.password,password); +- sprintf(valid_url.uamname,uamname); ++ snprintf(valid_url.servername,sizeof(valid_url.servername),"%s",servername); ++ snprintf(valid_url.volumename,sizeof(valid_url.volumename),"%s",volumename); ++ snprintf(valid_url.path,sizeof(valid_url.path),"%s",path); ++ snprintf(valid_url.username,sizeof(valid_url.username),"%s",username); ++ snprintf(valid_url.password,sizeof(valid_url.password),"%s",password); ++ snprintf(valid_url.uamname,(valid_url.uamname),"%s",uamname); + valid_url.port=port; + + if (afp_url_validate(url_string,&valid_url)) +diff --git a/fuse/client.c b/fuse/client.c +index f795ca6..d19e9ef 100644 +--- a/fuse/client.c ++++ b/fuse/client.c +@@ -509,7 +509,6 @@ static int prepare_buffer(int argc, char * argv[]) + int read_answer(int sock) { + int len=0, expected_len=0, packetlen; + char incoming_buffer[MAX_CLIENT_RESPONSE]; +- char toprint[MAX_CLIENT_RESPONSE+200]; + struct timeval tv; + fd_set rds,ords; + int ret; +@@ -546,9 +545,7 @@ int read_answer(int sock) { + } + + done: +- memset(toprint,0,MAX_CLIENT_RESPONSE+200); +- snprintf(toprint,MAX_CLIENT_RESPONSE+200,"%s",incoming_buffer+sizeof(*answer)); +- printf(toprint); ++ printf("%.200s",incoming_buffer+sizeof(*answer)); + return ((struct afp_server_response *) incoming_buffer)->result; + + return 0; +diff --git a/fuse/commands.c b/fuse/commands.c +index aa7444d..bb06928 100644 +--- a/fuse/commands.c ++++ b/fuse/commands.c +@@ -163,6 +163,7 @@ static void fuse_log_for_client(void * priv, + len = strlen(c->client_string); + snprintf(c->client_string+len, + MAX_CLIENT_RESPONSE-len, ++ "%s", + message); + } else { + +@@ -468,7 +468,7 @@ static int process_mount(struct fuse_client * c) + volume->mapping=req->map; + afp_detect_mapping(volume); + +- snprintf(volume->mountpoint,255,req->mountpoint); ++ snprintf(volume->mountpoint,255,"%s",req->mountpoint); + + /* Create the new thread and block until we get an answer back */ + { +diff --git a/lib/afp_url.c b/lib/afp_url.c +index 42bac1c..f152d7b 100644 +--- a/lib/afp_url.c ++++ b/lib/afp_url.c +@@ -233,7 +233,7 @@ int afp_parse_url(struct afp_url * url, const char * toparse, int verbose) + } + } + +- snprintf(url->servername,strlen(p)+1,p); ++ snprintf(url->servername,strlen(p)+1,"%s",p); + if (check_servername(url->servername)) { + if (verbose) printf("This isn't a valid servername\n"); + return -1; +@@ -263,7 +263,7 @@ int afp_parse_url(struct afp_url * url, const char * toparse, int verbose) + if ((q=escape_strrchr(p,':',":"))) { + *q='\0'; + q++; +- snprintf(url->password,strlen(q)+1,q); ++ snprintf(url->password,strlen(q)+1,"%s",q); + if (check_password(url->password)) { + if (verbose) printf("This isn't a valid passwd\n"); + return -1; +@@ -276,7 +276,7 @@ int afp_parse_url(struct afp_url * url, const char * toparse, int verbose) + if ((q=strstr(p,";AUTH="))) { + *q='\0'; + q+=6; +- snprintf(url->uamname,strlen(q)+1,q); ++ snprintf(url->uamname,strlen(q)+1,"%s",q); + if (check_uamname(url->uamname)) { + if (verbose) printf("This isn't a valid uamname\n"); + return -1; +@@ -284,7 +284,7 @@ int afp_parse_url(struct afp_url * url, const char * toparse, int verbose) + } + + if (strlen(p)>0) { +- snprintf(url->username,strlen(p)+1,p); ++ snprintf(url->username,strlen(p)+1,"%s",p); + if (check_username(url->username)) { + if (verbose) printf("This isn't a valid username\n"); + return -1;; +@@ -304,12 +304,12 @@ parse_secondpart: + *q='\0'; + q++; + } +- snprintf(url->volumename,strlen(p)+1,p); ++ snprintf(url->volumename,strlen(p)+1,"%s",p); + + + if (q) { + url->path[0]='/'; +- snprintf(url->path+1,strlen(q)+1,q); ++ snprintf(url->path+1,strlen(q)+1,"%s",q); + } + + done: +-- +1.8.4.2 + diff --git a/afpfs-ng-0.8.1-overflows.patch b/afpfs-ng-0.8.1-overflows.patch new file mode 100644 index 0000000..94399ed --- /dev/null +++ b/afpfs-ng-0.8.1-overflows.patch @@ -0,0 +1,28 @@ +Fix possible buffer overflows (given we're copying to storage of AFP_MAX_PATH, +while AFP_MAX_PATH is much smaller than PATH_MAX) + +Lubomir Rintel + +--- afpfs-ng-0.8.1/cmdline/cmdline_afp.c.overflows 2008-10-06 19:21:32.000000000 +0200 ++++ afpfs-ng-0.8.1/cmdline/cmdline_afp.c 2008-10-06 19:13:50.000000000 +0200 +@@ -129,9 +129,9 @@ + { + if (filename[0]!='/') { + if (strlen(curdir)==1) +- snprintf(server_fullname,PATH_MAX,"/%s",filename); ++ snprintf(server_fullname,AFP_MAX_PATH,"/%s",filename); + else +- snprintf(server_fullname,PATH_MAX,"%s/%s",curdir,filename); ++ snprintf(server_fullname,AFP_MAX_PATH,"%s/%s",curdir,filename); + } else { + snprintf(server_fullname,PATH_MAX,"%s",filename); + } +@@ -1217,7 +1217,7 @@ + { + struct passwd * passwd; + +- snprintf(curdir,PATH_MAX,"%s",DEFAULT_DIRECTORY); ++ snprintf(curdir,AFP_MAX_PATH,"%s",DEFAULT_DIRECTORY); + if (init_uams()<0) return -1; + + afp_default_url(&url); diff --git a/afpfs-ng-0.8.1-pointer.patch b/afpfs-ng-0.8.1-pointer.patch new file mode 100644 index 0000000..b47b834 --- /dev/null +++ b/afpfs-ng-0.8.1-pointer.patch @@ -0,0 +1,280 @@ +diff -up afpfs-ng-0.8.1/cmdline/getstatus.c.pointer afpfs-ng-0.8.1/cmdline/getstatus.c +--- afpfs-ng-0.8.1/cmdline/getstatus.c.pointer 2011-06-14 17:06:35.000000000 +0200 ++++ afpfs-ng-0.8.1/cmdline/getstatus.c 2011-06-14 17:07:25.000000000 +0200 +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include + +diff -up afpfs-ng-0.8.1/fuse/client.c.pointer afpfs-ng-0.8.1/fuse/client.c +--- afpfs-ng-0.8.1/fuse/client.c.pointer 2008-03-08 03:44:16.000000000 +0100 ++++ afpfs-ng-0.8.1/fuse/client.c 2011-06-14 17:02:15.000000000 +0200 +@@ -61,8 +61,9 @@ static int start_afpfsd(void) + snprintf(filename, PATH_MAX, + "/usr/local/bin/%s",AFPFSD_FILENAME); + if (access(filename,X_OK)) { +- snprintf(filename, "/usr/bin/%s", ++ snprintf(filename, sizeof(filename), "/usr/bin/%s", + AFPFSD_FILENAME); ++ filename[sizeof(filename) - 1] = 0; + if (access(filename,X_OK)) { + printf("Could not find server (%s)\n", + filename); +diff -up afpfs-ng-0.8.1/fuse/fuse_int.c.pointer afpfs-ng-0.8.1/fuse/fuse_int.c +--- afpfs-ng-0.8.1/fuse/fuse_int.c.pointer 2008-03-02 06:06:24.000000000 +0100 ++++ afpfs-ng-0.8.1/fuse/fuse_int.c 2011-06-14 17:02:15.000000000 +0200 +@@ -197,7 +197,7 @@ static int fuse_open(const char *path, s + ret = ml_open(volume,path,flags,&fp); + + if (ret==0) +- fi->fh=(void *) fp; ++ fi->fh=(unsigned long) fp; + + return ret; + } +diff -up afpfs-ng-0.8.1/include/afp.h.pointer afpfs-ng-0.8.1/include/afp.h +--- afpfs-ng-0.8.1/include/afp.h.pointer 2008-03-08 17:08:18.000000000 +0100 ++++ afpfs-ng-0.8.1/include/afp.h 2011-06-14 17:02:15.000000000 +0200 +@@ -370,7 +370,7 @@ int afp_unmount_all_volumes(struct afp_s + + int afp_opendt(struct afp_volume *volume, unsigned short * refnum); + +-int afp_closedt(struct afp_server * server, unsigned short * refnum); ++int afp_closedt(struct afp_server * server, unsigned short refnum); + + int afp_getcomment(struct afp_volume *volume, unsigned int did, + const char * pathname, struct afp_comment * comment); +diff -up afpfs-ng-0.8.1/include/utils.h.pointer afpfs-ng-0.8.1/include/utils.h +--- afpfs-ng-0.8.1/include/utils.h.pointer 2008-02-18 04:33:58.000000000 +0100 ++++ afpfs-ng-0.8.1/include/utils.h 2011-06-14 17:02:15.000000000 +0200 +@@ -8,8 +8,8 @@ + #define hton64(x) (x) + #define ntoh64(x) (x) + #else /* BYTE_ORDER == BIG_ENDIAN */ +-#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \ +- (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32)) ++#define hton64(x) ((u_int64_t) (htonl((((unsigned long long)(x)) >> 32) & 0xffffffffLL)) | \ ++ (u_int64_t) ((htonl((unsigned long long)(x)) & 0xffffffffLL) << 32)) + #define ntoh64(x) (hton64(x)) + #endif /* BYTE_ORDER == BIG_ENDIAN */ + +diff -up afpfs-ng-0.8.1/lib/afp_url.c.pointer afpfs-ng-0.8.1/lib/afp_url.c +--- afpfs-ng-0.8.1/lib/afp_url.c.pointer 2008-03-04 21:16:49.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/afp_url.c 2011-06-14 17:02:15.000000000 +0200 +@@ -33,7 +33,7 @@ static int check_port(char * port) + static int check_uamname(const char * uam) + { + char * p; +- for (p=uam;*p;p++) { ++ for (p=(char *)uam;*p;p++) { + if (*p==' ') continue; + if ((*p<'A') || (*p>'z')) return -1; + } +@@ -188,7 +188,7 @@ int afp_parse_url(struct afp_url * url, + return -1; + + } +- if (p==NULL) p=toparse; ++ if (p==NULL) p=(char *)toparse; + + /* Now split on the first / */ + if (sscanf(p,"%[^/]/%[^$]", +diff -up afpfs-ng-0.8.1/lib/did.c.pointer afpfs-ng-0.8.1/lib/did.c +--- afpfs-ng-0.8.1/lib/did.c.pointer 2008-02-18 04:39:17.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/did.c 2011-06-14 17:02:15.000000000 +0200 +@@ -226,7 +226,7 @@ int get_dirid(struct afp_volume * volume + + + /* Go to the end of last known entry */ +- p=path+(p-copy); ++ p=(char *)path+(p-copy); + p2=p; + + while ((p=strchr(p+1,'/'))) { +diff -up afpfs-ng-0.8.1/lib/dsi.c.pointer afpfs-ng-0.8.1/lib/dsi.c +--- afpfs-ng-0.8.1/lib/dsi.c.pointer 2008-02-18 04:53:03.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/dsi.c 2011-06-14 17:02:15.000000000 +0200 +@@ -474,7 +474,7 @@ void dsi_getstatus_reply(struct afp_serv + } + server->flags=ntohs(reply1->flags); + +- p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1)); ++ p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1)); + p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1; + + /* Now work our way through the variable bits */ +@@ -757,7 +757,7 @@ gotenough: + printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read); + #endif + ret = read(server->fd, (void *) +- (((unsigned int) server->incoming_buffer)+server->data_read), ++ (((unsigned long) server->incoming_buffer)+server->data_read), + amount_to_read); + if (ret<0) return -1; + if (ret==0) { +diff -up afpfs-ng-0.8.1/lib/loop.c.pointer afpfs-ng-0.8.1/lib/loop.c +--- afpfs-ng-0.8.1/lib/loop.c.pointer 2008-02-18 04:40:11.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/loop.c 2011-06-14 17:02:15.000000000 +0200 +@@ -25,7 +25,7 @@ + static unsigned char exit_program=0; + + static pthread_t ending_thread; +-static pthread_t main_thread = NULL; ++static pthread_t main_thread = (pthread_t)NULL; + + static int loop_started=0; + static pthread_cond_t loop_started_condition; +diff -up afpfs-ng-0.8.1/lib/lowlevel.c.pointer afpfs-ng-0.8.1/lib/lowlevel.c +--- afpfs-ng-0.8.1/lib/lowlevel.c.pointer 2008-02-20 02:33:17.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/lowlevel.c 2011-06-14 17:02:15.000000000 +0200 +@@ -582,7 +582,7 @@ int ll_getattr(struct afp_volume * volum + if (volume->server->using_version->av_number>=30) + stbuf->st_mode |= fp.unixprivs.permissions; + else +- set_nonunix_perms(stbuf,&fp); ++ set_nonunix_perms(&stbuf->st_mode,&fp); + + stbuf->st_uid=fp.unixprivs.uid; + stbuf->st_gid=fp.unixprivs.gid; +diff -up afpfs-ng-0.8.1/lib/midlevel.c.pointer afpfs-ng-0.8.1/lib/midlevel.c +--- afpfs-ng-0.8.1/lib/midlevel.c.pointer 2008-03-08 17:08:18.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/midlevel.c 2011-06-14 17:02:15.000000000 +0200 +@@ -713,7 +713,7 @@ int ml_write(struct afp_volume * volume, + { + + int ret,err=0; +- int totalwritten = 0; ++ size_t totalwritten = 0; + uint64_t sizetowrite, ignored; + unsigned char flags = 0; + unsigned int max_packet_size=volume->server->tx_quantum; +diff -up afpfs-ng-0.8.1/lib/proto_attr.c.pointer afpfs-ng-0.8.1/lib/proto_attr.c +--- afpfs-ng-0.8.1/lib/proto_attr.c.pointer 2008-01-30 05:37:58.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/proto_attr.c 2011-06-14 17:02:15.000000000 +0200 +@@ -166,7 +166,7 @@ int afp_getextattr(struct afp_volume * v + copy_path(server,p,pathname,strlen(pathname)); + unixpath_to_afppath(server,p); + p2=p+sizeof_path_header(server)+strlen(pathname); +- if (((unsigned int ) p2) & 0x1) p2++; ++ if (((unsigned long) p2) & 0x1) p2++; + req2=(void *) p2; + + req2->len=htons(namelen); +diff -up afpfs-ng-0.8.1/lib/proto_desktop.c.pointer afpfs-ng-0.8.1/lib/proto_desktop.c +--- afpfs-ng-0.8.1/lib/proto_desktop.c.pointer 2008-02-18 04:44:11.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/proto_desktop.c 2011-06-14 17:02:15.000000000 +0200 +@@ -168,7 +168,7 @@ int afp_getcomment_reply(struct afp_serv + return 0; + } + +-int afp_closedt(struct afp_server * server, unsigned short * refnum) ++int afp_closedt(struct afp_server * server, unsigned short refnum) + { + struct { + struct dsi_header dsi_header __attribute__((__packed__)); +diff -up afpfs-ng-0.8.1/lib/proto_directory.c.pointer afpfs-ng-0.8.1/lib/proto_directory.c +--- afpfs-ng-0.8.1/lib/proto_directory.c.pointer 2008-02-19 03:39:29.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/proto_directory.c 2011-06-14 17:02:15.000000000 +0200 +@@ -248,6 +248,7 @@ int afp_enumerate_reply(struct afp_serve + + return 0; + } ++ + int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other) + { + +@@ -266,8 +267,7 @@ int afp_enumerateext2_reply(struct afp_s + char * p = buf + sizeof(*reply); + int i; + char *max=buf+size; +- struct afp_file_info * filebase = NULL, *filecur=NULL, *new_file=NULL; +- void ** x = other; ++ struct afp_file_info * filebase = NULL, *filecur = NULL, *new_file = NULL, **x = (struct afp_file_info **) other; + + if (reply->dsi_header.return_code.error_code) { + return reply->dsi_header.return_code.error_code; +diff -up afpfs-ng-0.8.1/lib/proto_map.c.pointer afpfs-ng-0.8.1/lib/proto_map.c +--- afpfs-ng-0.8.1/lib/proto_map.c.pointer 2008-01-30 05:37:59.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/proto_map.c 2011-06-14 17:02:15.000000000 +0200 +@@ -122,7 +122,7 @@ int afp_mapid_reply(struct afp_server *s + + if (reply->header.return_code.error_code!=kFPNoErr) return -1; + +- copy_from_pascal_two(name,&reply->name,255); ++ copy_from_pascal_two(name,reply->name,255); + + return 0; + } +diff -up afpfs-ng-0.8.1/lib/proto_session.c.pointer afpfs-ng-0.8.1/lib/proto_session.c +--- afpfs-ng-0.8.1/lib/proto_session.c.pointer 2008-02-18 04:46:19.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/proto_session.c 2011-06-14 17:02:15.000000000 +0200 +@@ -39,7 +39,7 @@ int afp_getsessiontoken(struct afp_serve + switch (type) { + case kLoginWithTimeAndID: + case kReconnWithTimeAndID: { +- uint32_t *p = (void *) (((unsigned int) request)+ ++ uint32_t *p = (void *) (((unsigned long) request)+ + sizeof(*request)); + + offset=sizeof(timestamp); +@@ -63,7 +63,7 @@ int afp_getsessiontoken(struct afp_serve + goto error; + } + +- data=(void *) (((unsigned int) request)+sizeof(*request)+offset); ++ data=(void *) (((unsigned long) request)+sizeof(*request)+offset); + request->idlength=htonl(datalen); + request->pad=0; + request->type=htons(type); +@@ -127,7 +127,7 @@ int afp_disconnectoldsession(struct afp_ + if ((request=malloc(sizeof(*request) + AFP_TOKEN_MAX_LEN))==NULL) + return -1; + +- token_data = request + sizeof(*request); ++ token_data = (char *)request + sizeof(*request); + + request->type=htons(type); + +diff -up afpfs-ng-0.8.1/lib/uams.c.pointer afpfs-ng-0.8.1/lib/uams.c +--- afpfs-ng-0.8.1/lib/uams.c.pointer 2008-01-04 04:52:44.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/uams.c 2011-06-14 17:02:15.000000000 +0200 +@@ -180,7 +180,7 @@ static int cleartxt_login(struct afp_ser + goto cleartxt_fail; + + p += copy_to_pascal(p, username) + 1; +- if ((int)p & 0x1) ++ if ((long)p & 0x1) + len--; + else + p++; +@@ -230,7 +230,7 @@ static int cleartxt_passwd(struct afp_se + goto cleartxt_fail; + + p += copy_to_pascal(p, username) + 1; +- if ((int)p & 0x1) ++ if ((long)p & 0x1) + len--; + else + p++; +@@ -580,7 +580,7 @@ static int dhx_login(struct afp_server * + if (ai == NULL) + goto dhx_noctx_fail; + d += copy_to_pascal(ai, username) + 1; +- if (((int)d) % 2) ++ if (((long)d) % 2) + d++; + else + ai_len--; +diff -up afpfs-ng-0.8.1/lib/utils.c.pointer afpfs-ng-0.8.1/lib/utils.c +--- afpfs-ng-0.8.1/lib/utils.c.pointer 2008-02-18 04:53:37.000000000 +0100 ++++ afpfs-ng-0.8.1/lib/utils.c 2011-06-14 17:02:15.000000000 +0200 +@@ -196,7 +196,7 @@ int invalid_filename(struct afp_server * + maxlen=255; + + +- p=filename+1; ++ p=(char *)filename+1; + while ((q=strchr(p,'/'))) { + if (q>p+maxlen) + return 1; diff --git a/afpfs-ng.spec b/afpfs-ng.spec new file mode 100644 index 0000000..fff2582 --- /dev/null +++ b/afpfs-ng.spec @@ -0,0 +1,205 @@ +# No FUSE on RHEL5 +%if %{?el5:1}0 +%define _without_fuse 1 +%endif + +Name: afpfs-ng +Version: 0.8.1 +Release: 30%{?dist} +Summary: Apple Filing Protocol client + +License: GPL+ +URL: http://alexthepuffin.googlepages.com/home +Source0: http://downloads.sourceforge.net/afpfs-ng/%{name}-%{version}.tar.bz2 +Patch0: afpfs-ng-0.8.1-overflows.patch +Patch1: afpfs-ng-0.8.1-pointer.patch +# Sent by e-mail to Alex deVries +Patch2: afpfs-ng-0.8.1-formatsec.patch + +%{?!_without_fuse:BuildRequires: fuse-devel} +BuildRequires: gcc +BuildRequires: libgcrypt-devel gmp-devel readline-devel + +%description +A command line client to access files exported from Mac OS system via +Apple Filing Protocol. +%{?!_without_fuse:The FUSE filesystem module for AFP is in fuse-afp package} + + +%if %{?!_without_fuse:1}0 +%package -n fuse-afp +Summary: FUSE driver for AFP filesystem + +%description -n fuse-afp +A FUSE file system server to access files exported from Mac OS system +via AppleTalk or TCP using Apple Filing Protocol. +The command line client for AFP is in fuse-afp package +%endif + + +%package devel +Summary: Development files for afpfs-ng +Requires: %{name} = %{version} + +%description devel +Library for dynamic linking and header files of afpfs-ng. + + +%prep +%setup -q +%patch0 -p1 -b .overflows +%patch1 -p1 -b .pointer +%patch2 -p1 -b .formatsec + + +%build +# make would rebuild the autoconf infrastructure due to the following: +# Prerequisite `configure.ac' is newer than target `Makefile.in'. +# Prerequisite `aclocal.m4' is newer than target `Makefile.in'. +# Prerequisite `configure.ac' is newer than target `aclocal.m4'. +touch --reference aclocal.m4 configure.ac Makefile.in + +export CFLAGS="${RPM_OPT_FLAGS} -fcommon" +%configure %{?_without_fuse:--disable-fuse} --disable-static +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} +install -d %{buildroot}%{_includedir}/afpfs-ng +cp -p include/* %{buildroot}%{_includedir}/afpfs-ng + + +%files +%{_bindir}/afpcmd +%{_bindir}/afpgetstatus +%{_mandir}/man1/afpcmd.1* +%{_mandir}/man1/afpgetstatus.1* +%{_libdir}/*.so.* +%exclude %{_libdir}/*.la +%doc COPYING AUTHORS ChangeLog docs/README docs/performance docs/FEATURES.txt docs/REPORTING-BUGS.txt + + +%if %{?!_without_fuse:1}0 +%files -n fuse-afp +%{_bindir}/afp_client +%{_bindir}/afpfs +%{_bindir}/afpfsd +%{_bindir}/mount_afp +%{_mandir}/man1/afp_client.1* +%{_mandir}/man1/afpfsd.1* +%{_mandir}/man1/mount_afp.1* +%doc COPYING AUTHORS ChangeLog +%endif + + +%files devel +%{_includedir}/afpfs-ng +%{_libdir}/*.so + + +%ldconfig_scriptlets + + +%changelog +* Wed Apr 22 2020 Michal Ambroz - 0.8.1-30 +- fix FTBFS - multiple definition of - build legacy code with -fcommon + +* Tue Jan 28 2020 Fedora Release Engineering - 0.8.1-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 0.8.1-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 17 2019 Igor Gnatenko - 0.8.1-27 +- Rebuild for readline 8.0 + +* Thu Jan 31 2019 Fedora Release Engineering - 0.8.1-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jul 12 2018 Fedora Release Engineering - 0.8.1-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 0.8.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 0.8.1-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.8.1-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 0.8.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 0.8.1-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 16 2015 Fedora Release Engineering - 0.8.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue Nov 25 2014 - 0.8.1-18 +- Fix mount_afp crash (RHBZ #1165296) + +* Fri Aug 15 2014 Fedora Release Engineering - 0.8.1-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.8.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Apr 22 2014 Tomáš Mráz - 0.8.1-15 +- Rebuild for new libgcrypt + +* Wed Dec 04 2013 Lubomir Rintel - 0.8.1-14 +- Fix build with -Werror=format-security + +* Thu Oct 24 2013 Lubomir Rintel - 0.8.1-13.3 +- Bulk sad and useless attempt at consistent SPEC file formatting + +* Sat Aug 03 2013 Fedora Release Engineering - 0.8.1-12.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Feb 13 2013 Fedora Release Engineering - 0.8.1-11.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jul 18 2012 Fedora Release Engineering - 0.8.1-10.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 0.8.1-9.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Oct 20 2011 Marcela Mašláňová - 0.8.1-8.3 +- rebuild with new gmp without compat lib + +* Mon Oct 10 2011 Peter Schiffer - 0.8.1-8.2 +- rebuild with new gmp + +* Mon Sep 26 2011 Peter Schiffer - 0.8.1-8.1 +- rebuild with new gmp + +* Mon Jul 4 2011 Jan F. Chadima - 0.8.1-8 +- Repair ponter arithmetic + +* Mon Feb 07 2011 Fedora Release Engineering - 0.8.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Sep 17 2009 Peter Lemenkov - 0.8.1-6 +- Rebuild with new fuse + +* Fri Jul 24 2009 Fedora Release Engineering - 0.8.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 17 2009 Lubomir Rintel - 0.8.1-4 +- Don't refer to AppleTalk in Summary + +* Tue Jul 14 2009 Lubomir Rintel - 0.8.1-3 +- Fix up license tag + +* Thu Mar 19 2009 Lubomir Rintel - 0.8.1-2 +- Add more include files (Jan F. Chadima) +- Don't needlessly build static library (Stefan Kasal) +- Fix fuse-afp summary (Stefan Kasal) +- Remove redundant license file from -devel (Stefan Kasal) + +* Mon Oct 6 2008 Lubomir Rintel - 0.8.1-1 +- Initial packaging attempt diff --git a/sources b/sources index e69de29..4bd856f 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +1bdd9f8a06e6085ea4cc38ce010ef60b afpfs-ng-0.8.1.tar.bz2