pkgsrc/net/yale-tftpd/patches/patch-ai
he 4b48e335d6 Update patches for this package so that it builds with -Werror and
-Wall with the gcc in NetBSD 5.1, i.e. gcc 4.1.3.  Fixes prompted
by reports that a build outside of pkgsrc for "64-bit Linux" (amd64)
but using this set of patches, gets a segfault, and this fixes that
problem.  Bump pkgrevision.
2012-01-25 09:56:08 +00:00

222 lines
5.4 KiB
Text

$NetBSD: patch-ai,v 1.5 2012/01/25 09:56:08 he Exp $
A number of changes to make this build with no warnings under -Wall.
--- tftpyale.c.orig 1995-03-20 20:11:11.000000000 +0000
+++ tftpyale.c
@@ -2,8 +2,9 @@
#include <string.h>
#include <syslog.h>
#include <ctype.h>
-#include <arpa/tftp.h>
#include <sys/types.h>
+#include <arpa/inet.h>
+#include <arpa/tftp.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include "tftpyale.h"
@@ -73,6 +74,10 @@ static char* accessFormatError;
static char* cfgets();
static struct stat configStat;
static int defaultAccessList;
+static int addFileRestriction(int, char **);
+static void resetConfig();
+static void accessDebugDump();
+
/* for debugging printouts */
static char* permNames[] ={ "deny", "readonly", "writeonly", "readwrite" };
@@ -90,12 +95,12 @@ static char* permNames[] ={ "deny", "rea
#define CMD_INPUT_WAIT 7
/* Add a file restriction clause to the list */
-static
+static int
addFileRestriction (ac, av)
int ac;
char** av;
{
- int list;
+ long list;
ac--; av++;
if (ac != 2) {
@@ -104,7 +109,7 @@ char** av;
}
/* get list number */
- list = atoi (av[1]);
+ list = atol (av[1]);
if (list <= 0) {
accessFormatError = "list argument not positive integer";
return 0;
@@ -142,6 +147,7 @@ int *lineCount;
/* Return whether the file named by the argument stat structure
* is the same as the configuration file.
*/
+int
isConfigFile (sb)
struct stat* sb;
{
@@ -157,27 +163,24 @@ struct stat* sb;
* qualified (starts with '/') check to see if the
* prefix matches the default directory.
*/
-static int
+static long
getAccessList (fileName)
char* fileName;
{
- unsigned int list;
+ unsigned long list;
char* rindex();
if (*fileName == '/') {
- char* sep = rindex (fileName, '/');
- int count = sep - fileName;
-
- if (count > 0)
- count--;
if (tftpDefaultDirectory
&& strncmp(fileName, tftpDefaultDirectory,
strlen(tftpDefaultDirectory))==0) {
- fileName = sep+1;
+ fileName +=strlen(tftpDefaultDirectory);
+ if(*fileName == '/')
+ fileName++;
}
}
- list = (int)dict_find (fileAccessDict, fileName);
+ list = (long)dict_find (fileAccessDict, fileName);
return list ? list : defaultAccessList;
}
@@ -202,7 +205,7 @@ char* arg;
* on the file and check to see if it's been modified since
* the last read.
*/
-
+int
readConfigFile(argc, argv)
int argc;
char** argv;
@@ -216,12 +219,14 @@ char** argv;
struct stat statb;
Config cnf;
+ fileName="";
/* If given an argument, it must be the name
* of a configuration file. Otherwise use
* the default.
*/
if (tftpDebugLevel > 3) {
- syslog(LOG_DEBUG, "readConfigFile(%d,0x%08x)", argc, argv);
+ syslog(LOG_DEBUG, "readConfigFile(%d,0x%08x)",
+ argc, (intptr_t) argv);
}
if (configf == 0) {
fileName = dfltConfigFile;
@@ -238,7 +243,7 @@ char** argv;
}
if (tftpDebugLevel > 3) {
syslog(LOG_DEBUG, "configFile = '%s'; FILE* = 0x%08x",
- fileName, configf);
+ fileName, (intptr_t)configf);
}
/* See if the file has been changed since the last time we
@@ -250,7 +255,7 @@ char** argv;
fstat(fileno(configf), &statb);
configStat = statb;
if (statb.st_mtime == configModTime)
- return;
+ return 0;
configModTime = statb.st_mtime;
/* Read the config file */
@@ -262,14 +267,13 @@ char** argv;
config_setoptions (cnf, config_getoptions (cnf)& ~CFG_OPT_CASEMAP);
while (cfgets (buf, sizeof buf, configf, &configLineNumber) != NULL) {
- char* end;
cargc = config_scanbuf (cnf, buf);
if (cargc == 0)
continue;
cargv = config_fields(cnf);
- switch ((int)dict_find (commandDict, cargv[0])) {
+ switch ((long)dict_find (commandDict, cargv[0])) {
/* specify default directory */
case CMD_DEFAULT_DIR:
if (cargc != 2)
@@ -446,7 +450,7 @@ char* buf;
/* squeeze out current and parent entries */
{
- register i, j;
+ int i, j;
for (i=0, j=0; i < num; i++) {
char* cur = obuf[i];
@@ -481,28 +485,28 @@ char* buf;
static struct CMDS {
char* cmdName;
- int cmdVal;
+ long cmdVal;
} configCmds[] ={
- "default-directory", CMD_DEFAULT_DIR,
- "defaultDirectory", CMD_DEFAULT_DIR,
- "debug-level", CMD_DEBUG_LEVEL,
- "debugLevel", CMD_DEBUG_LEVEL,
- "root-directory", CMD_ROOT_DIR,
- "rootDirectory", CMD_ROOT_DIR,
- "access-list", CMD_ACCESS_LIST,
- "accessList", CMD_ACCESS_LIST,
- "default-access-list", CMD_DEFAULT_ACCESS_LIST,
- "defaultAccessList", CMD_DEFAULT_ACCESS_LIST,
- "restrict", CMD_RESTRICT,
- "inputWait", CMD_INPUT_WAIT,
- "input-wait", CMD_INPUT_WAIT,
- (char*)0, 0
+ { "default-directory", CMD_DEFAULT_DIR },
+ { "defaultDirectory", CMD_DEFAULT_DIR },
+ { "debug-level", CMD_DEBUG_LEVEL },
+ { "debugLevel", CMD_DEBUG_LEVEL },
+ { "root-directory", CMD_ROOT_DIR },
+ { "rootDirectory", CMD_ROOT_DIR },
+ { "access-list", CMD_ACCESS_LIST },
+ { "accessList", CMD_ACCESS_LIST },
+ { "default-access-list",CMD_DEFAULT_ACCESS_LIST },
+ { "defaultAccessList", CMD_DEFAULT_ACCESS_LIST },
+ { "restrict", CMD_RESTRICT },
+ { "inputWait", CMD_INPUT_WAIT },
+ { "input-wait", CMD_INPUT_WAIT },
+ { (char*)0, 0 }
};
/* reset configuration options to defaults */
+static void
resetConfig()
{
- register int i;
extern char* dfltDefaultDirectory;
extern char* dfltRootDirectory;
extern int dfltDebugLevel;
@@ -603,12 +607,14 @@ int type;
#ifndef DEBUG
+static void
accessDebugDump()
{
}
#else
#include <stdio.h>
+static void
accessDebugDump()
{
FILE* logf;