RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/wordnet#511721fbfe1a4015aca652f2d5ea27ba6b4904b5
This commit is contained in:
parent
5639069b59
commit
d08d1bad46
2
.gitignore
vendored
2
.gitignore
vendored
@ -0,0 +1,2 @@
|
||||
WordNet-3.0.tar.bz2
|
||||
/wn3.1.dict.tar.gz
|
2
.rpmlint
Normal file
2
.rpmlint
Normal file
@ -0,0 +1,2 @@
|
||||
from Config import *
|
||||
addFilter("spelling-error .* (Synsets|synsets|Tk)");
|
2
sources
Normal file
2
sources
Normal file
@ -0,0 +1,2 @@
|
||||
SHA512 (WordNet-3.0.tar.bz2) = 2d0f94114da276a40c954d52b234355e64e9422d6431580558d4c7f1c574902aa7d31660a157aca0ca1954aabad3779de610c9c49f9511d419136d4c13b3e7f0
|
||||
SHA512 (wn3.1.dict.tar.gz) = 16dca17a87026d8a0b7b4758219cd21a869c3ef3da23ce7875924546f2eacac4c2f376cb271b798b2c458fe8c078fb43d681356e3d9beef40f4bd88d3579394f
|
12
wordnet-3.0-CVE-2008-2149.patch
Normal file
12
wordnet-3.0-CVE-2008-2149.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- wordnet-3.0.orig/src/wn.c
|
||||
+++ wordnet-3.0/src/wn.c
|
||||
@@ -206,7 +206,8 @@
|
||||
outsenses += do_search(av[1], optptr->pos, optptr->search,
|
||||
whichsense, optptr->label);
|
||||
} else {
|
||||
- sprintf(tmpbuf, "wn: invalid search option: %s\n", av[j]);
|
||||
+ /* Fix CVE-2008-2149: buffer overflows Andreas Tille <tille@debian.org> */
|
||||
+ sprintf(tmpbuf, "wn: invalid search option: %.200s\n", av[j]);
|
||||
display_message(tmpbuf);
|
||||
errcount++;
|
||||
}
|
732
wordnet-3.0-CVE-2008-3908.patch
Normal file
732
wordnet-3.0-CVE-2008-3908.patch
Normal file
@ -0,0 +1,732 @@
|
||||
diff --git a/lib/binsrch.c b/lib/binsrch.c
|
||||
index 85436f3..8b71216 100644
|
||||
--- a/lib/binsrch.c
|
||||
+++ b/lib/binsrch.c
|
||||
@@ -28,7 +28,7 @@ char *read_index(long offset, FILE *fp) {
|
||||
char *linep;
|
||||
|
||||
linep = line;
|
||||
- line[0] = '0';
|
||||
+ line[0] = '\0';
|
||||
|
||||
fseek( fp, offset, SEEK_SET );
|
||||
fgets(linep, LINE_LEN, fp);
|
||||
@@ -58,6 +58,8 @@ char *bin_search(char *searchkey, FILE *fp)
|
||||
last_bin_search_offset = ftell( fp );
|
||||
fgets(linep, LINE_LEN, fp);
|
||||
length = (int)(strchr(linep, ' ') - linep);
|
||||
+ if (length > (sizeof(key) - 1))
|
||||
+ return(NULL);
|
||||
strncpy(key, linep, length);
|
||||
key[length] = '\0';
|
||||
if(strcmp(key, searchkey) < 0) {
|
||||
@@ -110,6 +112,8 @@ static int bin_search_key(char *searchkey, FILE *fp)
|
||||
line[length++] = c;
|
||||
if (getc(fp) == EOF) { /* only 1 line in file */
|
||||
length = (int)(strchr(linep, ' ') - linep);
|
||||
+ if (length > (sizeof(key) - 1))
|
||||
+ return(0);
|
||||
strncpy(key, linep, length);
|
||||
key[length] = '\0';
|
||||
if(strcmp(key, searchkey) > 0) {
|
||||
@@ -132,6 +136,8 @@ static int bin_search_key(char *searchkey, FILE *fp)
|
||||
if (fgets(linep, LINE_LEN, fp) != NULL) {
|
||||
offset2 = ftell(fp); /* offset at start of next line */
|
||||
length = (int)(strchr(linep, ' ') - linep);
|
||||
+ if (length > (sizeof(key) - 1))
|
||||
+ return(0);
|
||||
strncpy(key, linep, length);
|
||||
key[length] = '\0';
|
||||
if(strcmp(key, searchkey) < 0) { /* further in file */
|
||||
diff --git a/lib/morph.c b/lib/morph.c
|
||||
index 0cff594..ea4b4f8 100644
|
||||
--- a/lib/morph.c
|
||||
+++ b/lib/morph.c
|
||||
@@ -51,24 +51,24 @@ static struct {
|
||||
char *str;
|
||||
int strlen;
|
||||
} prepositions[NUMPREPS] = {
|
||||
- "to", 2,
|
||||
- "at", 2,
|
||||
- "of", 2,
|
||||
- "on", 2,
|
||||
- "off", 3,
|
||||
- "in", 2,
|
||||
- "out", 3,
|
||||
- "up", 2,
|
||||
- "down", 4,
|
||||
- "from", 4,
|
||||
- "with", 4,
|
||||
- "into", 4,
|
||||
- "for", 3,
|
||||
- "about", 5,
|
||||
- "between", 7,
|
||||
+ { "to", 2 },
|
||||
+ { "at", 2 },
|
||||
+ { "of", 2 },
|
||||
+ { "on", 2 },
|
||||
+ { "off", 3 },
|
||||
+ { "in", 2 },
|
||||
+ { "out", 3 },
|
||||
+ { "up", 2 },
|
||||
+ { "down", 4 },
|
||||
+ { "from", 4 },
|
||||
+ { "with", 4 },
|
||||
+ { "into", 4 },
|
||||
+ { "for", 3 },
|
||||
+ { "about", 5 },
|
||||
+ { "between", 7 }
|
||||
};
|
||||
|
||||
-static FILE *exc_fps[NUMPARTS + 1];
|
||||
+static FILE *exc_fps[NUMPARTS];
|
||||
|
||||
static int do_init();
|
||||
static int strend(char *, char *);
|
||||
@@ -100,7 +100,7 @@ int re_morphinit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
- for (i = 1; i <= NUMPARTS; i++) {
|
||||
+ for (i = 0; i < NUMPARTS; i++) {
|
||||
if (exc_fps[i] != NULL) {
|
||||
fclose(exc_fps[i]); exc_fps[i] = NULL;
|
||||
}
|
||||
@@ -144,18 +144,19 @@ static int do_init(void)
|
||||
} else
|
||||
sprintf(searchdir, DEFAULTPATH);
|
||||
#else
|
||||
- if ((env = getenv("WNSEARCHDIR")) != NULL)
|
||||
- strcpy(searchdir, env);
|
||||
- else if ((env = getenv("WNHOME")) != NULL)
|
||||
- sprintf(searchdir, "%s%s", env, DICTDIR);
|
||||
- else
|
||||
+ if ((env = getenv("WNSEARCHDIR")) != NULL) {
|
||||
+ snprintf(searchdir, sizeof(searchdir), "%s", env);
|
||||
+ } else if ((env = getenv("WNHOME")) != NULL) {
|
||||
+ snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
|
||||
+ } else {
|
||||
strcpy(searchdir, DEFAULTPATH);
|
||||
+ }
|
||||
#endif
|
||||
|
||||
- for (i = 1; i <= NUMPARTS; i++) {
|
||||
- sprintf(fname, EXCFILE, searchdir, partnames[i]);
|
||||
+ for (i = 0; i < NUMPARTS; i++) {
|
||||
+ snprintf(fname, sizeof(fname), EXCFILE, searchdir, partnames[i+1]);
|
||||
if ((exc_fps[i] = fopen(fname, "r")) == NULL) {
|
||||
- sprintf(msgbuf,
|
||||
+ snprintf(msgbuf, sizeof(msgbuf),
|
||||
"WordNet library error: Can't open exception file(%s)\n\n",
|
||||
fname);
|
||||
display_message(msgbuf);
|
||||
@@ -178,13 +179,16 @@ char *morphstr(char *origstr, int pos)
|
||||
int prep;
|
||||
char *end_idx1, *end_idx2;
|
||||
char *append;
|
||||
-
|
||||
+
|
||||
if (pos == SATELLITE)
|
||||
pos = ADJ;
|
||||
|
||||
/* First time through for this string */
|
||||
|
||||
if (origstr != NULL) {
|
||||
+ if (strlen(origstr) > WORDBUF - 1)
|
||||
+ return(NULL);
|
||||
+
|
||||
/* Assume string hasn't had spaces substitued with '_' */
|
||||
strtolower(strsubst(strcpy(str, origstr), ' ', '_'));
|
||||
searchstr[0] = '\0';
|
||||
@@ -232,7 +236,7 @@ char *morphstr(char *origstr, int pos)
|
||||
if (end_idx < 0) return(NULL); /* shouldn't do this */
|
||||
strncpy(word, str + st_idx, end_idx - st_idx);
|
||||
word[end_idx - st_idx] = '\0';
|
||||
- if(tmp = morphword(word, pos))
|
||||
+ if ((tmp = morphword(word, pos)) != NULL)
|
||||
strcat(searchstr,tmp);
|
||||
else
|
||||
strcat(searchstr,word);
|
||||
@@ -240,7 +244,7 @@ char *morphstr(char *origstr, int pos)
|
||||
st_idx = end_idx + 1;
|
||||
}
|
||||
|
||||
- if(tmp = morphword(strcpy(word, str + st_idx), pos))
|
||||
+ if ((tmp = morphword(strcpy(word, str + st_idx), pos)) != NULL)
|
||||
strcat(searchstr,tmp);
|
||||
else
|
||||
strcat(searchstr,word);
|
||||
@@ -270,16 +274,15 @@ char *morphword(char *word, int pos)
|
||||
{
|
||||
int offset, cnt;
|
||||
int i;
|
||||
- static char retval[WORDBUF];
|
||||
- char *tmp, tmpbuf[WORDBUF], *end;
|
||||
-
|
||||
- sprintf(retval,"");
|
||||
- sprintf(tmpbuf, "");
|
||||
- end = "";
|
||||
-
|
||||
+ static char retval[WORDBUF] = "";
|
||||
+ char *tmp, tmpbuf[WORDBUF] = "", *end = "";
|
||||
+
|
||||
if(word == NULL)
|
||||
return(NULL);
|
||||
|
||||
+ if (strlen(word) > WORDBUF - 1)
|
||||
+ return(NULL);
|
||||
+
|
||||
/* first look for word on exception list */
|
||||
|
||||
if((tmp = exc_lookup(word, pos)) != NULL)
|
||||
@@ -335,7 +338,10 @@ static char *wordbase(char *word, int ender)
|
||||
{
|
||||
char *pt1;
|
||||
static char copy[WORDBUF];
|
||||
-
|
||||
+
|
||||
+ if (strlen(word) > WORDBUF - 1)
|
||||
+ return(NULL);
|
||||
+
|
||||
strcpy(copy, word);
|
||||
if(strend(copy,sufx[ender])) {
|
||||
pt1=strchr(copy,'\0');
|
||||
@@ -368,13 +374,14 @@ static char *exc_lookup(char *word, int pos)
|
||||
{
|
||||
static char line[WORDBUF], *beglp, *endlp;
|
||||
char *excline;
|
||||
- int found = 0;
|
||||
|
||||
if (exc_fps[pos] == NULL)
|
||||
return(NULL);
|
||||
|
||||
/* first time through load line from exception file */
|
||||
if(word != NULL){
|
||||
+ if (strlen(word) > WORDBUF - 1)
|
||||
+ return(NULL);
|
||||
if ((excline = bin_search(word, exc_fps[pos])) != NULL) {
|
||||
strcpy(line, excline);
|
||||
endlp = strchr(line,' ');
|
||||
@@ -403,6 +410,9 @@ static char *morphprep(char *s)
|
||||
char word[WORDBUF], end[WORDBUF];
|
||||
static char retval[WORDBUF];
|
||||
|
||||
+ if (strlen(s) > WORDBUF - 1)
|
||||
+ return (NULL);
|
||||
+
|
||||
/* Assume that the verb is the first word in the phrase. Strip it
|
||||
off, check for validity, then try various morphs with the
|
||||
rest of the phrase tacked on, trying to find a match. */
|
||||
@@ -410,7 +420,7 @@ static char *morphprep(char *s)
|
||||
rest = strchr(s, '_');
|
||||
last = strrchr(s, '_');
|
||||
if (rest != last) { /* more than 2 words */
|
||||
- if (lastwd = morphword(last + 1, NOUN)) {
|
||||
+ if ((lastwd = morphword(last + 1, NOUN)) != NULL) {
|
||||
strncpy(end, rest, last - rest + 1);
|
||||
end[last-rest+1] = '\0';
|
||||
strcat(end, lastwd);
|
||||
diff --git a/lib/search.c b/lib/search.c
|
||||
index 1cdedc3..bc781cd 100644
|
||||
--- a/lib/search.c
|
||||
+++ b/lib/search.c
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
+#include <limits.h>
|
||||
|
||||
#include "wn.h"
|
||||
|
||||
@@ -119,33 +120,22 @@ IndexPtr parse_index(long offset, int dbase, char *line) {
|
||||
if ( !line )
|
||||
line = read_index( offset, indexfps[dbase] );
|
||||
|
||||
- idx = (IndexPtr)malloc(sizeof(Index));
|
||||
+ idx = (IndexPtr)calloc(1, sizeof(Index));
|
||||
assert(idx);
|
||||
|
||||
/* set offset of entry in index file */
|
||||
idx->idxoffset = offset;
|
||||
|
||||
- idx->wd='\0';
|
||||
- idx->pos='\0';
|
||||
- idx->off_cnt=0;
|
||||
- idx->tagged_cnt = 0;
|
||||
- idx->sense_cnt=0;
|
||||
- idx->offset='\0';
|
||||
- idx->ptruse_cnt=0;
|
||||
- idx->ptruse='\0';
|
||||
-
|
||||
/* get the word */
|
||||
ptrtok=strtok(line," \n");
|
||||
|
||||
- idx->wd = malloc(strlen(ptrtok) + 1);
|
||||
+ idx->wd = strdup(ptrtok);
|
||||
assert(idx->wd);
|
||||
- strcpy(idx->wd, ptrtok);
|
||||
|
||||
/* get the part of speech */
|
||||
ptrtok=strtok(NULL," \n");
|
||||
- idx->pos = malloc(strlen(ptrtok) + 1);
|
||||
+ idx->pos = strdup(ptrtok);
|
||||
assert(idx->pos);
|
||||
- strcpy(idx->pos, ptrtok);
|
||||
|
||||
/* get the collins count */
|
||||
ptrtok=strtok(NULL," \n");
|
||||
@@ -154,7 +144,12 @@ IndexPtr parse_index(long offset, int dbase, char *line) {
|
||||
/* get the number of pointers types */
|
||||
ptrtok=strtok(NULL," \n");
|
||||
idx->ptruse_cnt = atoi(ptrtok);
|
||||
-
|
||||
+
|
||||
+ if (idx->ptruse_cnt < 0 || (unsigned int)idx->ptruse_cnt > UINT_MAX/sizeof(int)) {
|
||||
+ free_index(idx);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
if (idx->ptruse_cnt) {
|
||||
idx->ptruse = (int *) malloc(idx->ptruse_cnt * (sizeof(int)));
|
||||
assert(idx->ptruse);
|
||||
@@ -173,9 +168,14 @@ IndexPtr parse_index(long offset, int dbase, char *line) {
|
||||
/* get the number of senses that are tagged */
|
||||
ptrtok=strtok(NULL," \n");
|
||||
idx->tagged_cnt = atoi(ptrtok);
|
||||
-
|
||||
+
|
||||
+ if (idx->off_cnt < 0 || (unsigned long)idx->off_cnt > ULONG_MAX/sizeof(long)) {
|
||||
+ free_index(idx);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
/* make space for the offsets */
|
||||
- idx->offset = (long *) malloc(idx->off_cnt * (sizeof(long)));
|
||||
+ idx->offset = (unsigned long *) malloc(idx->off_cnt * sizeof(long));
|
||||
assert(idx->offset);
|
||||
|
||||
/* get the offsets */
|
||||
@@ -197,15 +197,21 @@ IndexPtr getindex(char *searchstr, int dbase)
|
||||
char strings[MAX_FORMS][WORDBUF]; /* vector of search strings */
|
||||
static IndexPtr offsets[MAX_FORMS];
|
||||
static int offset;
|
||||
-
|
||||
+
|
||||
/* This works like strrok(): if passed with a non-null string,
|
||||
prepare vector of search strings and offsets. If string
|
||||
is null, look at current list of offsets and return next
|
||||
one, or NULL if no more alternatives for this word. */
|
||||
|
||||
if (searchstr != NULL) {
|
||||
-
|
||||
- offset = 0;
|
||||
+ /* Bail out if the input is too long for us to handle */
|
||||
+ if (strlen(searchstr) > (WORDBUF - 1)) {
|
||||
+ strcpy(msgbuf, "WordNet library error: search term is too long\n");
|
||||
+ display_message(msgbuf);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
+ offset = 0;
|
||||
strtolower(searchstr);
|
||||
for (i = 0; i < MAX_FORMS; i++) {
|
||||
strcpy(strings[i], searchstr);
|
||||
@@ -229,11 +235,11 @@ IndexPtr getindex(char *searchstr, int dbase)
|
||||
/* Get offset of first entry. Then eliminate duplicates
|
||||
and get offsets of unique strings. */
|
||||
|
||||
- if (strings[0][0] != NULL)
|
||||
+ if (strings[0] != NULL)
|
||||
offsets[0] = index_lookup(strings[0], dbase);
|
||||
|
||||
for (i = 1; i < MAX_FORMS; i++)
|
||||
- if ((strings[i][0]) != NULL && (strcmp(strings[0], strings[i])))
|
||||
+ if (strings[i] != NULL && (strcmp(strings[0], strings[i])))
|
||||
offsets[i] = index_lookup(strings[i], dbase);
|
||||
}
|
||||
|
||||
@@ -272,7 +278,7 @@ SynsetPtr read_synset(int dbase, long boffset, char *word)
|
||||
SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
{
|
||||
static char line[LINEBUF];
|
||||
- char tbuf[SMLINEBUF];
|
||||
+ char tbuf[SMLINEBUF] = "";
|
||||
char *ptrtok;
|
||||
char *tmpptr;
|
||||
int foundpert = 0;
|
||||
@@ -286,33 +292,11 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
if ((tmpptr = fgets(line, LINEBUF, fp)) == NULL)
|
||||
return(NULL);
|
||||
|
||||
- synptr = (SynsetPtr)malloc(sizeof(Synset));
|
||||
+ synptr = (SynsetPtr)calloc(1, sizeof(Synset));
|
||||
assert(synptr);
|
||||
-
|
||||
- synptr->hereiam = 0;
|
||||
+
|
||||
synptr->sstype = DONT_KNOW;
|
||||
- synptr->fnum = 0;
|
||||
- synptr->pos = '\0';
|
||||
- synptr->wcount = 0;
|
||||
- synptr->words = '\0';
|
||||
- synptr->whichword = 0;
|
||||
- synptr->ptrcount = 0;
|
||||
- synptr->ptrtyp = '\0';
|
||||
- synptr->ptroff = '\0';
|
||||
- synptr->ppos = '\0';
|
||||
- synptr->pto = '\0';
|
||||
- synptr->pfrm = '\0';
|
||||
- synptr->fcount = 0;
|
||||
- synptr->frmid = '\0';
|
||||
- synptr->frmto = '\0';
|
||||
- synptr->defn = '\0';
|
||||
- synptr->key = 0;
|
||||
- synptr->nextss = NULL;
|
||||
- synptr->nextform = NULL;
|
||||
synptr->searchtype = -1;
|
||||
- synptr->ptrlist = NULL;
|
||||
- synptr->headword = NULL;
|
||||
- synptr->headsense = 0;
|
||||
|
||||
ptrtok = line;
|
||||
|
||||
@@ -322,7 +306,7 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
|
||||
/* sanity check - make sure starting file offset matches first field */
|
||||
if (synptr->hereiam != loc) {
|
||||
- sprintf(msgbuf, "WordNet library error: no synset at location %d\n",
|
||||
+ sprintf(msgbuf, "WordNet library error: no synset at location %ld\n",
|
||||
loc);
|
||||
display_message(msgbuf);
|
||||
free(synptr);
|
||||
@@ -335,16 +319,20 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
|
||||
/* looking at POS */
|
||||
ptrtok = strtok(NULL, " \n");
|
||||
- synptr->pos = malloc(strlen(ptrtok) + 1);
|
||||
+ synptr->pos = strdup(ptrtok);
|
||||
assert(synptr->pos);
|
||||
- strcpy(synptr->pos, ptrtok);
|
||||
if (getsstype(synptr->pos) == SATELLITE)
|
||||
synptr->sstype = INDIRECT_ANT;
|
||||
|
||||
/* looking at numwords */
|
||||
ptrtok = strtok(NULL, " \n");
|
||||
synptr->wcount = strtol(ptrtok, NULL, 16);
|
||||
-
|
||||
+
|
||||
+ if (synptr->wcount < 0 || (unsigned int)synptr->wcount > UINT_MAX/sizeof(char *)) {
|
||||
+ free_syns(synptr);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
synptr->words = (char **)malloc(synptr->wcount * sizeof(char *));
|
||||
assert(synptr->words);
|
||||
synptr->wnsns = (int *)malloc(synptr->wcount * sizeof(int));
|
||||
@@ -354,9 +342,8 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
|
||||
for (i = 0; i < synptr->wcount; i++) {
|
||||
ptrtok = strtok(NULL, " \n");
|
||||
- synptr->words[i] = malloc(strlen(ptrtok) + 1);
|
||||
+ synptr->words[i] = strdup(ptrtok);
|
||||
assert(synptr->words[i]);
|
||||
- strcpy(synptr->words[i], ptrtok);
|
||||
|
||||
/* is this the word we're looking for? */
|
||||
|
||||
@@ -371,6 +358,12 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
ptrtok = strtok(NULL," \n");
|
||||
synptr->ptrcount = atoi(ptrtok);
|
||||
|
||||
+ /* Should we check for long here as well? */
|
||||
+ if (synptr->ptrcount < 0 || (unsigned int)synptr->ptrcount > UINT_MAX/sizeof(int)) {
|
||||
+ free_syns(synptr);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
+
|
||||
if (synptr->ptrcount) {
|
||||
|
||||
/* alloc storage for the pointers */
|
||||
@@ -455,21 +448,23 @@ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
|
||||
ptrtok = strtok(NULL," \n");
|
||||
if (ptrtok) {
|
||||
ptrtok = strtok(NULL," \n");
|
||||
- sprintf(tbuf, "");
|
||||
while (ptrtok != NULL) {
|
||||
+ if (strlen(ptrtok) + strlen(tbuf) + 1 + 1 > sizeof(tbuf)) {
|
||||
+ free_syns(synptr);
|
||||
+ return(NULL);
|
||||
+ }
|
||||
strcat(tbuf,ptrtok);
|
||||
ptrtok = strtok(NULL, " \n");
|
||||
if(ptrtok)
|
||||
strcat(tbuf," ");
|
||||
}
|
||||
- assert((1 + strlen(tbuf)) < sizeof(tbuf));
|
||||
- synptr->defn = malloc(strlen(tbuf) + 4);
|
||||
+ synptr->defn = malloc(strlen(tbuf) + 3);
|
||||
assert(synptr->defn);
|
||||
sprintf(synptr->defn,"(%s)",tbuf);
|
||||
}
|
||||
|
||||
if (keyindexfp) { /* we have unique keys */
|
||||
- sprintf(tmpbuf, "%c:%8.8d", partchars[dbase], synptr->hereiam);
|
||||
+ sprintf(tmpbuf, "%c:%8.8ld", partchars[dbase], synptr->hereiam);
|
||||
synptr->key = GetKeyForOffset(tmpbuf);
|
||||
}
|
||||
|
||||
@@ -635,7 +630,7 @@ static void traceptrs(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
|
||||
|
||||
if ((ptrtyp == PERTPTR || ptrtyp == PPLPTR) &&
|
||||
synptr->pto[i] != 0) {
|
||||
- sprintf(tbuf, " (Sense %d)\n",
|
||||
+ snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
|
||||
cursyn->wnsns[synptr->pto[i] - 1]);
|
||||
printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
|
||||
SKIP_ANTS, PRINT_MARKER);
|
||||
@@ -656,7 +651,7 @@ static void traceptrs(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
|
||||
traceptrs(cursyn, HYPERPTR, getpos(cursyn->pos), 0);
|
||||
}
|
||||
} else if (ptrtyp == ANTPTR && dbase != ADJ && synptr->pto[i] != 0) {
|
||||
- sprintf(tbuf, " (Sense %d)\n",
|
||||
+ snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
|
||||
cursyn->wnsns[synptr->pto[i] - 1]);
|
||||
printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
|
||||
SKIP_ANTS, PRINT_MARKER);
|
||||
@@ -817,7 +812,7 @@ static void tracenomins(SynsetPtr synptr, int dbase)
|
||||
|
||||
cursyn = read_synset(synptr->ppos[i], synptr->ptroff[i], "");
|
||||
|
||||
- sprintf(tbuf, "#%d\n",
|
||||
+ snprintf(tbuf, sizeof(tbuf), "#%d\n",
|
||||
cursyn->wnsns[synptr->pto[i] - 1]);
|
||||
printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
|
||||
SKIP_ANTS, SKIP_MARKER);
|
||||
@@ -989,12 +984,12 @@ void getexample(char *offset, char *wd)
|
||||
char sentbuf[512];
|
||||
|
||||
if (vsentfilefp != NULL) {
|
||||
- if (line = bin_search(offset, vsentfilefp)) {
|
||||
+ if ((line = bin_search(offset, vsentfilefp)) != NULL) {
|
||||
while(*line != ' ')
|
||||
line++;
|
||||
|
||||
printbuffer(" EX: ");
|
||||
- sprintf(sentbuf, line, wd);
|
||||
+ snprintf(sentbuf, sizeof(sentbuf), line, wd);
|
||||
printbuffer(sentbuf);
|
||||
}
|
||||
}
|
||||
@@ -1011,7 +1006,7 @@ int findexample(SynsetPtr synptr)
|
||||
if (vidxfilefp != NULL) {
|
||||
wdnum = synptr->whichword - 1;
|
||||
|
||||
- sprintf(tbuf,"%s%%%-1.1d:%-2.2d:%-2.2d::",
|
||||
+ snprintf(tbuf, sizeof(tbuf), "%s%%%-1.1d:%-2.2d:%-2.2d::",
|
||||
synptr->words[wdnum],
|
||||
getpos(synptr->pos),
|
||||
synptr->fnum,
|
||||
@@ -1124,7 +1119,7 @@ static void freq_word(IndexPtr index)
|
||||
if (cnt >= 17 && cnt <= 32) familiar = 6;
|
||||
if (cnt > 32 ) familiar = 7;
|
||||
|
||||
- sprintf(tmpbuf,
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf),
|
||||
"\n%s used as %s is %s (polysemy count = %d)\n",
|
||||
index->wd, a_an[getpos(index->pos)], freqcats[familiar], cnt);
|
||||
printbuffer(tmpbuf);
|
||||
@@ -1147,6 +1142,9 @@ void wngrep (char *word_passed, int pos) {
|
||||
}
|
||||
rewind(inputfile);
|
||||
|
||||
+ if (strlen(word_passed) + 1 > sizeof(word))
|
||||
+ return;
|
||||
+
|
||||
strcpy (word, word_passed);
|
||||
ToLowerCase(word); /* map to lower case for index file search */
|
||||
strsubst (word, ' ', '_'); /* replace spaces with underscores */
|
||||
@@ -1169,7 +1167,7 @@ void wngrep (char *word_passed, int pos) {
|
||||
((line[loc + wordlen] == '-') || (line[loc + wordlen] == '_')))
|
||||
) {
|
||||
strsubst (line, '_', ' ');
|
||||
- sprintf (tmpbuf, "%s\n", line);
|
||||
+ snprintf (tmpbuf, sizeof(tmpbuf), "%s\n", line);
|
||||
printbuffer (tmpbuf);
|
||||
break;
|
||||
}
|
||||
@@ -1570,7 +1568,8 @@ char *findtheinfo(char *searchstr, int dbase, int ptrtyp, int whichsense)
|
||||
bufstart[0] = '\n';
|
||||
bufstart++;
|
||||
}
|
||||
- strncpy(bufstart, tmpbuf, strlen(tmpbuf));
|
||||
+ /* Don't include the \0 */
|
||||
+ memcpy(bufstart, tmpbuf, strlen(tmpbuf));
|
||||
bufstart = searchbuffer + strlen(searchbuffer);
|
||||
}
|
||||
}
|
||||
@@ -1683,9 +1682,8 @@ SynsetPtr traceptrs_ds(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
|
||||
cursyn = read_synset(synptr->ppos[i],
|
||||
synptr->ptroff[i],
|
||||
"");
|
||||
- synptr->headword = malloc(strlen(cursyn->words[0]) + 1);
|
||||
+ synptr->headword = strdup(cursyn->words[0]);
|
||||
assert(synptr->headword);
|
||||
- strcpy(synptr->headword, cursyn->words[0]);
|
||||
synptr->headsense = cursyn->lexid[0];
|
||||
free_synset(cursyn);
|
||||
break;
|
||||
@@ -2013,7 +2011,7 @@ static int getsearchsense(SynsetPtr synptr, int whichword)
|
||||
strsubst(strcpy(wdbuf, synptr->words[whichword - 1]), ' ', '_');
|
||||
strtolower(wdbuf);
|
||||
|
||||
- if (idx = index_lookup(wdbuf, getpos(synptr->pos))) {
|
||||
+ if ((idx = index_lookup(wdbuf, getpos(synptr->pos))) != NULL) {
|
||||
for (i = 0; i < idx->off_cnt; i++)
|
||||
if (idx->offset[i] == synptr->hereiam) {
|
||||
free_index(idx);
|
||||
@@ -2037,7 +2035,7 @@ static void printsynset(char *head, SynsetPtr synptr, char *tail, int definition
|
||||
by flags */
|
||||
|
||||
if (offsetflag) /* print synset offset */
|
||||
- sprintf(tbuf + strlen(tbuf),"{%8.8d} ", synptr->hereiam);
|
||||
+ sprintf(tbuf + strlen(tbuf),"{%8.8ld} ", synptr->hereiam);
|
||||
if (fileinfoflag) { /* print lexicographer file information */
|
||||
sprintf(tbuf + strlen(tbuf), "<%s> ", lexfiles[synptr->fnum]);
|
||||
prlexid = 1; /* print lexicographer id after word */
|
||||
@@ -2072,7 +2070,7 @@ static void printantsynset(SynsetPtr synptr, char *tail, int anttype, int defini
|
||||
tbuf[0] = '\0';
|
||||
|
||||
if (offsetflag)
|
||||
- sprintf(tbuf,"{%8.8d} ", synptr->hereiam);
|
||||
+ sprintf(tbuf,"{%8.8ld} ", synptr->hereiam);
|
||||
if (fileinfoflag) {
|
||||
sprintf(tbuf + strlen(tbuf),"<%s> ", lexfiles[synptr->fnum]);
|
||||
prlexid = 1;
|
||||
diff --git a/lib/wnutil.c b/lib/wnutil.c
|
||||
index 5ee5d76..7b7948a 100644
|
||||
--- a/lib/wnutil.c
|
||||
+++ b/lib/wnutil.c
|
||||
@@ -48,7 +48,7 @@ int wninit(void)
|
||||
char *env;
|
||||
|
||||
if (!done) {
|
||||
- if (env = getenv("WNDBVERSION")) {
|
||||
+ if ((env = getenv("WNDBVERSION")) != NULL) {
|
||||
wnrelease = strdup(env); /* set release */
|
||||
assert(wnrelease);
|
||||
}
|
||||
@@ -70,7 +70,7 @@ int re_wninit(void)
|
||||
|
||||
closefps();
|
||||
|
||||
- if (env = getenv("WNDBVERSION")) {
|
||||
+ if ((env = getenv("WNDBVERSION")) != NULL) {
|
||||
wnrelease = strdup(env); /* set release */
|
||||
assert(wnrelease);
|
||||
}
|
||||
@@ -149,25 +149,25 @@ static int do_init(void)
|
||||
sprintf(searchdir, DEFAULTPATH);
|
||||
#else
|
||||
if ((env = getenv("WNSEARCHDIR")) != NULL)
|
||||
- strcpy(searchdir, env);
|
||||
+ snprintf(searchdir, sizeof(searchdir), "%s", env);
|
||||
else if ((env = getenv("WNHOME")) != NULL)
|
||||
- sprintf(searchdir, "%s%s", env, DICTDIR);
|
||||
+ snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
|
||||
else
|
||||
strcpy(searchdir, DEFAULTPATH);
|
||||
#endif
|
||||
|
||||
for (i = 1; i < NUMPARTS + 1; i++) {
|
||||
- sprintf(tmpbuf, DATAFILE, searchdir, partnames[i]);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), DATAFILE, searchdir, partnames[i]);
|
||||
if((datafps[i] = fopen(tmpbuf, "r")) == NULL) {
|
||||
- sprintf(msgbuf,
|
||||
+ snprintf(msgbuf, sizeof(msgbuf),
|
||||
"WordNet library error: Can't open datafile(%s)\n",
|
||||
tmpbuf);
|
||||
display_message(msgbuf);
|
||||
openerr = -1;
|
||||
}
|
||||
- sprintf(tmpbuf, INDEXFILE, searchdir, partnames[i]);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), INDEXFILE, searchdir, partnames[i]);
|
||||
if((indexfps[i] = fopen(tmpbuf, "r")) == NULL) {
|
||||
- sprintf(msgbuf,
|
||||
+ snprintf(msgbuf, sizeof(msgbuf),
|
||||
"WordNet library error: Can't open indexfile(%s)\n",
|
||||
tmpbuf);
|
||||
display_message(msgbuf);
|
||||
@@ -178,35 +178,35 @@ static int do_init(void)
|
||||
/* This file isn't used by the library and doesn't have to
|
||||
be present. No error is reported if the open fails. */
|
||||
|
||||
- sprintf(tmpbuf, SENSEIDXFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), SENSEIDXFILE, searchdir);
|
||||
sensefp = fopen(tmpbuf, "r");
|
||||
|
||||
/* If this file isn't present, the runtime code will skip printint out
|
||||
the number of times each sense was tagged. */
|
||||
|
||||
- sprintf(tmpbuf, CNTLISTFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), CNTLISTFILE, searchdir);
|
||||
cntlistfp = fopen(tmpbuf, "r");
|
||||
|
||||
/* This file doesn't have to be present. No error is reported if the
|
||||
open fails. */
|
||||
|
||||
- sprintf(tmpbuf, KEYIDXFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), KEYIDXFILE, searchdir);
|
||||
keyindexfp = fopen(tmpbuf, "r");
|
||||
|
||||
- sprintf(tmpbuf, REVKEYIDXFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), REVKEYIDXFILE, searchdir);
|
||||
revkeyindexfp = fopen(tmpbuf, "r");
|
||||
|
||||
- sprintf(tmpbuf, VRBSENTFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), VRBSENTFILE, searchdir);
|
||||
if ((vsentfilefp = fopen(tmpbuf, "r")) == NULL) {
|
||||
- sprintf(msgbuf,
|
||||
+ snprintf(msgbuf, sizeof(msgbuf),
|
||||
"WordNet library warning: Can't open verb example sentence file(%s)\n",
|
||||
tmpbuf);
|
||||
display_message(msgbuf);
|
||||
}
|
||||
|
||||
- sprintf(tmpbuf, VRBIDXFILE, searchdir);
|
||||
+ snprintf(tmpbuf, sizeof(tmpbuf), VRBIDXFILE, searchdir);
|
||||
if ((vidxfilefp = fopen(tmpbuf, "r")) == NULL) {
|
||||
- sprintf(msgbuf,
|
||||
+ snprintf(msgbuf, sizeof(msgbuf),
|
||||
"WordNet library warning: Can't open verb example sentence index file(%s)\n",
|
||||
tmpbuf);
|
||||
display_message(msgbuf);
|
||||
diff --git a/src/wn.c b/src/wn.c
|
||||
index ddb27aa..5c6a255 100644
|
||||
--- a/src/wn.c
|
||||
+++ b/src/wn.c
|
||||
@@ -129,7 +129,7 @@ static void printusage(), printlicense(),
|
||||
printsearches(char *, int, unsigned long);
|
||||
static int error_message(char *);
|
||||
|
||||
-main(int argc,char *argv[])
|
||||
+int main(int argc,char *argv[])
|
||||
{
|
||||
display_message = error_message;
|
||||
|
||||
@@ -225,14 +225,14 @@ static int do_search(char *searchword, int pos, int search, int whichsense,
|
||||
printf("\n%s of %s %s\n%s",
|
||||
label, partnames[pos], searchword, outbuf);
|
||||
|
||||
- if (morphword = morphstr(searchword, pos))
|
||||
+ if ((morphword = morphstr(searchword, pos)) != NULL)
|
||||
do {
|
||||
outbuf = findtheinfo(morphword, pos, search, whichsense);
|
||||
totsenses += wnresults.printcnt;
|
||||
if (strlen(outbuf) > 0)
|
||||
printf("\n%s of %s %s\n%s",
|
||||
label, partnames[pos], morphword, outbuf);
|
||||
- } while (morphword = morphstr(NULL, pos));
|
||||
+ } while ((morphword = morphstr(NULL, pos)) != NULL);
|
||||
|
||||
return(totsenses);
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
From ab6d29e9056173145cf49ebf9804e6caf2f870ea Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Wed, 4 Dec 2013 15:58:30 +0100
|
||||
Subject: [PATCH] Pass compilation with -Werror=format-security
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
<https://bugzilla.redhat.com/show_bug.cgi?id=1037386>
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
lib/binsrch.c | 4 ++--
|
||||
src/wn.c | 3 +--
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/binsrch.c b/lib/binsrch.c
|
||||
index 8b71216..6b17325 100644
|
||||
--- a/lib/binsrch.c
|
||||
+++ b/lib/binsrch.c
|
||||
@@ -193,7 +193,7 @@ char *replace_line(char *new_line, char *searchkey, FILE *fp)
|
||||
copyfile(fp, tfp);
|
||||
if (fseek(fp, offset, 0) == -1)
|
||||
return(NULL); /* could not seek to offset */
|
||||
- fprintf(fp, new_line); /* write line */
|
||||
+ fputs(new_line, fp); /* write line */
|
||||
rewind(tfp);
|
||||
copyfile(tfp, fp);
|
||||
|
||||
@@ -220,7 +220,7 @@ char *insert_line(char *new_line, char *searchkey, FILE *fp)
|
||||
copyfile(fp, tfp);
|
||||
if (fseek(fp, offset, 0) == -1)
|
||||
return(NULL); /* could not seek to offset */
|
||||
- fprintf(fp, new_line); /* write line */
|
||||
+ fputs(new_line, fp); /* write line */
|
||||
rewind(tfp);
|
||||
copyfile(tfp, fp);
|
||||
|
||||
diff --git a/src/wn.c b/src/wn.c
|
||||
index 6870a60..7eef283 100644
|
||||
--- a/src/wn.c
|
||||
+++ b/src/wn.c
|
||||
@@ -284,8 +284,7 @@ static void printsearches(char *word, int dbase, unsigned long search)
|
||||
printf("\t");
|
||||
printf(searchstr[j].template,
|
||||
partchars[dbase], partchars[dbase]);
|
||||
- printf(searchstr[j].helpstr);
|
||||
- printf("\n");
|
||||
+ printf("%s\n", searchstr[j].helpstr);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
12
wordnet-3.0-error_message.patch
Normal file
12
wordnet-3.0-error_message.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/src/wn.c b/src/wn.c
|
||||
index ddb27aa..b160392 100644
|
||||
--- a/src/wn.c
|
||||
+++ b/src/wn.c
|
||||
@@ -344,7 +344,7 @@ static int getoptidx(char *searchtype)
|
||||
|
||||
static int error_message(char *msg)
|
||||
{
|
||||
- fprintf(stderr, msg);
|
||||
+ fprintf(stderr, "%s", msg);
|
||||
return(0);
|
||||
}
|
1246
wordnet-3.0-fix_man.patch
Normal file
1246
wordnet-3.0-fix_man.patch
Normal file
File diff suppressed because it is too large
Load Diff
12
wordnet-3.0-fix_resourcedir_path.patch
Normal file
12
wordnet-3.0-fix_resourcedir_path.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -urNad wordnet-3.0/src/wnb.orig wordnet-3.0/src/wnb
|
||||
--- wordnet-3.0/src/wnb.orig 2005-06-07 21:19:22.000000000 +0200
|
||||
+++ wordnet-3.0/src/wnb 2006-01-08 13:54:23.537621328 +0100
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
if {$tcl_platform(platform) == "unix"} {
|
||||
if {[lsearch -exact [array names env] WNHOME] == -1} {
|
||||
- set resourcedir "/usr/local/WordNet-3.0/lib/wnres"
|
||||
+ set resourcedir "/usr/share/wordnet-3.0/lib/wnres"
|
||||
} else {
|
||||
set resourcedir "$env(WNHOME)/lib/wnres"
|
||||
}
|
26
wordnet-3.0-libtool.patch
Normal file
26
wordnet-3.0-libtool.patch
Normal file
@ -0,0 +1,26 @@
|
||||
diff -up WordNet-3.0/configure.ac.orig WordNet-3.0/configure.ac
|
||||
--- WordNet-3.0/configure.ac.orig 2009-05-27 11:57:53.000000000 +0200
|
||||
+++ WordNet-3.0/configure.ac 2009-05-27 11:58:30.000000000 +0200
|
||||
@@ -8,7 +8,8 @@ AC_CONFIG_HEADER([config.h])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
-AC_PROG_RANLIB
|
||||
+AM_PROG_CC_C_O
|
||||
+AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
|
||||
# Checks for header files.
|
||||
diff -up WordNet-3.0/lib/Makefile.am.orig WordNet-3.0/lib/Makefile.am
|
||||
--- WordNet-3.0/lib/Makefile.am.orig 2009-05-27 11:58:03.000000000 +0200
|
||||
+++ WordNet-3.0/lib/Makefile.am 2009-05-27 11:59:35.000000000 +0200
|
||||
@@ -1,5 +1,6 @@
|
||||
-lib_LIBRARIES = libWN.a
|
||||
-libWN_a_SOURCES = binsrch.c morph.c search.c wnglobal.c wnhelp.c wnrtl.c wnutil.c
|
||||
-libWN_a_CPPFLAGS = $(INCLUDES)
|
||||
+lib_LTLIBRARIES = libWN.la
|
||||
+libWN_la_SOURCES = binsrch.c morph.c search.c wnglobal.c wnhelp.c wnrtl.c wnutil.c
|
||||
+libWN_la_CPPFLAGS = $(INCLUDES)
|
||||
+libWN_la_LDFLAGS = -version-number 3:0:0
|
||||
INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include
|
||||
SUBDIRS = wnres
|
12
wordnet-3.0-src_stubs_c.patch
Normal file
12
wordnet-3.0-src_stubs_c.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -urNad wordnet-3.0/src/stubs.c.orig wordnet-3.0/src/stubs.c
|
||||
--- wordnet-3.0/src/stubs.c.orig 2007-01-04 18:47:55.000000000 +0100
|
||||
+++ wordnet-3.0/src/stubs.c 2007-01-20 19:01:19.000000000 +0100
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <tk.h>
|
||||
#include <wn.h>
|
||||
|
||||
-static char *Id = "$Id: stubs.c,v 1.7 2005/04/29 19:01:57 wn Exp $";
|
||||
+static const char Id[] = "$Id: stubs.c,v 1.7 2005/04/29 19:01:57 wn Exp $";
|
||||
|
||||
static char resultbuf[SEARCHBUF];
|
||||
|
49
wordnet-3.0-use_system_tk_headers.patch
Normal file
49
wordnet-3.0-use_system_tk_headers.patch
Normal file
@ -0,0 +1,49 @@
|
||||
diff -up WordNet-3.0/include/Makefile.am.BAD WordNet-3.0/include/Makefile.am
|
||||
--- WordNet-3.0/include/Makefile.am.BAD 2009-02-18 13:59:09.000000000 -0500
|
||||
+++ WordNet-3.0/include/Makefile.am 2009-02-18 13:59:12.000000000 -0500
|
||||
@@ -1,2 +1 @@
|
||||
include_HEADERS = wn.h
|
||||
-SUBDIRS = tk
|
||||
diff -up WordNet-3.0/include/Makefile.in.BAD WordNet-3.0/include/Makefile.in
|
||||
--- WordNet-3.0/include/Makefile.in.BAD 2009-02-18 13:59:28.000000000 -0500
|
||||
+++ WordNet-3.0/include/Makefile.in 2009-02-18 13:59:32.000000000 -0500
|
||||
@@ -147,7 +147,6 @@ sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
include_HEADERS = wn.h
|
||||
-SUBDIRS = tk
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
diff -up WordNet-3.0/configure.ac.BAD WordNet-3.0/configure.ac
|
||||
--- WordNet-3.0/configure.ac.BAD 2009-02-18 14:02:54.000000000 -0500
|
||||
+++ WordNet-3.0/configure.ac 2009-02-18 14:03:15.000000000 -0500
|
||||
@@ -47,7 +47,7 @@ AC_DEFINE_UNQUOTED(DEFAULTPATH, ["$ac_pr
|
||||
# This doesn't do anything
|
||||
AC_CONFIG_COMMANDS([default])
|
||||
|
||||
-AC_CONFIG_FILES(Makefile dict/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile doc/pdf/Makefile doc/ps/Makefile include/Makefile include/tk/Makefile
|
||||
+AC_CONFIG_FILES(Makefile dict/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile doc/pdf/Makefile doc/ps/Makefile include/Makefile
|
||||
src/Makefile lib/Makefile lib/wnres/Makefile)
|
||||
|
||||
AC_OUTPUT
|
||||
diff -up WordNet-3.0/configure.BAD WordNet-3.0/configure
|
||||
--- WordNet-3.0/configure.BAD 2009-02-18 14:02:35.000000000 -0500
|
||||
+++ WordNet-3.0/configure 2009-02-18 14:02:45.000000000 -0500
|
||||
@@ -4296,7 +4296,7 @@ _ACEOF
|
||||
ac_config_commands="$ac_config_commands default"
|
||||
|
||||
|
||||
- ac_config_files="$ac_config_files Makefile dict/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile doc/pdf/Makefile doc/ps/Makefile include/Makefile include/tk/Makefile src/Makefile lib/Makefile lib/wnres/Makefile"
|
||||
+ ac_config_files="$ac_config_files Makefile dict/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile doc/pdf/Makefile doc/ps/Makefile include/Makefile src/Makefile lib/Makefile lib/wnres/Makefile"
|
||||
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@@ -4856,7 +4856,6 @@ do
|
||||
"doc/pdf/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/pdf/Makefile" ;;
|
||||
"doc/ps/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/ps/Makefile" ;;
|
||||
"include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
|
||||
- "include/tk/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/tk/Makefile" ;;
|
||||
"src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
|
||||
"lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
|
||||
"lib/wnres/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/wnres/Makefile" ;;
|
48
wordnet-3.0-wishwn_manpage.patch
Normal file
48
wordnet-3.0-wishwn_manpage.patch
Normal file
@ -0,0 +1,48 @@
|
||||
diff -up WordNet-3.0/doc/man/wishwn.1.orig WordNet-3.0/doc/man/wishwn.1
|
||||
--- WordNet-3.0/doc/man/wishwn.1.orig 2009-01-14 00:47:21.000000000 +0100
|
||||
+++ WordNet-3.0/doc/man/wishwn.1 2009-01-14 00:47:43.000000000 +0100
|
||||
@@ -0,0 +1,44 @@
|
||||
+.\" Copyright (c) 2001 Andreas Tille <tille@debian.org>
|
||||
+.\"
|
||||
+.\" This manual page is free software; you can redistribute it and/or modify
|
||||
+.\" it under the terms of the GNU General Public License as published by
|
||||
+.\" the Free Software Foundation; either version 2 of the License, or
|
||||
+.\" (at your option) any later version.
|
||||
+.\"
|
||||
+.\" This program is distributed in the hope that it will be useful,
|
||||
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+.\" GNU General Public License for more details.
|
||||
+.\"
|
||||
+.\" You should have received a copy of the GNU General Public License
|
||||
+.\" along with this program; if not, write to the Free Software
|
||||
+.\" Foundation, Inc.,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
+.\"
|
||||
+.\" This manual page is written especially for Debian Linux.
|
||||
+.\"
|
||||
+.TH WISHWN 1 "May 2001" "Debian Project" "Debian GNU/Linux"
|
||||
+.SH NAME
|
||||
+wishwn \- default version of the Tcl_AppInit procedure for wnb(1)
|
||||
+
|
||||
+.SH SYNOPSIS
|
||||
+it is intended to be run from wnb (see wnb.1)
|
||||
+
|
||||
+.SH DESCRIPTION
|
||||
+
|
||||
+Provides a default version of the Tcl_AppInit procedure for
|
||||
+use in wish and similar Tk-based applications.
|
||||
+
|
||||
+Acts as a gateway between Tcl and the Wordnet C library. It
|
||||
+contains stubs for all the commands added to the default Tcl and Tk set
|
||||
+for this Wordnet application, as well as the routine that initializes them.
|
||||
+
|
||||
+.SH SEE ALSO
|
||||
+.BR wn (1),
|
||||
+.BR wnb (1).
|
||||
+
|
||||
+.SH AUTHOR
|
||||
+.B wishwn
|
||||
+was written by the authors of wordnet 1.6.
|
||||
+.PP
|
||||
+This manual page was created by Andreas Tille <tille@debian.org>
|
||||
+for the Debian GNU/Linux system. Feel free to improve this!
|
277
wordnet.spec
Normal file
277
wordnet.spec
Normal file
@ -0,0 +1,277 @@
|
||||
Name: wordnet
|
||||
Version: 3.0
|
||||
Release: 38%{?dist}
|
||||
Summary: A lexical database for the English language
|
||||
|
||||
License: MIT and GPLv2+
|
||||
URL: http://wordnet.princeton.edu/
|
||||
Source0: http://wordnetcode.princeton.edu/%{version}/WordNet-%{version}.tar.bz2
|
||||
# Updated database
|
||||
Source1: http://wordnetcode.princeton.edu/wn3.1.dict.tar.gz
|
||||
Patch0: wordnet-3.0-CVE-2008-2149.patch
|
||||
Patch1: wordnet-3.0-CVE-2008-3908.patch
|
||||
Patch2: wordnet-3.0-fix_man.patch
|
||||
Patch3: wordnet-3.0-fix_resourcedir_path.patch
|
||||
Patch4: wordnet-3.0-src_stubs_c.patch
|
||||
# wordnet-3.0-wishwn_manpage.patch is GPLv2+
|
||||
Patch5: wordnet-3.0-wishwn_manpage.patch
|
||||
Patch6: wordnet-3.0-use_system_tk_headers.patch
|
||||
Patch7: wordnet-3.0-libtool.patch
|
||||
# Bug #585206
|
||||
Patch8: wordnet-3.0-error_message.patch
|
||||
# Bug #1037386
|
||||
Patch9: wordnet-3.0-Pass-compilation-with-Werror-format-security.patch
|
||||
BuildRequires: automake >= 1.8
|
||||
BuildRequires: coreutils
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gzip
|
||||
BuildRequires: libtool
|
||||
BuildRequires: make
|
||||
BuildRequires: tar
|
||||
BuildRequires: tcl-devel
|
||||
BuildRequires: tk-devel
|
||||
|
||||
%description
|
||||
WordNet is a large lexical database of English, developed under the direction
|
||||
of George A. Miller. Nouns, verbs, adjectives and adverbs are grouped into sets
|
||||
of cognitive synonyms (synsets), each expressing a distinct concept. Synsets
|
||||
are interlinked by means of conceptual-semantic and lexical relations. The
|
||||
resulting network of meaningfully related words and concepts can be navigated
|
||||
with the browser. WordNet is also freely and publicly available for download.
|
||||
WordNet's structure makes it a useful tool for computational linguistics and
|
||||
natural language processing.
|
||||
|
||||
|
||||
%package browser
|
||||
Summary: Tk browser for WordNet
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: font(:lang=en)
|
||||
|
||||
%description browser
|
||||
This package contains graphical browser for WordNet database.
|
||||
|
||||
|
||||
%package devel
|
||||
Summary: The development libraries and header files for WordNet
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
This package contains the libraries and header files required to create
|
||||
applications based on WordNet.
|
||||
|
||||
|
||||
%package doc
|
||||
Summary: Manual pages for WordNet in alternative formats
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
This package contains manual pages for WordNet package in HTML, PDF,
|
||||
and PostScript format.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n WordNet-%{version}
|
||||
%patch0 -p1 -b .cve-2008-2149
|
||||
%patch1 -p1 -b .cve-2008-3908
|
||||
%patch2 -p1 -b .fix_man
|
||||
%patch3 -p1 -b .fix_resourcedir_path
|
||||
%patch4 -p1 -b .src_stubs_c
|
||||
%patch5 -p1 -b .wishwn_manpage
|
||||
sed -e '/man_MANS/ s/$/ wishwn.1/' -i doc/man/Makefile.am
|
||||
%patch6 -p1 -b .use_system_tk_headers
|
||||
%patch7 -p1 -b .libtool
|
||||
%patch8 -p1 -b .error_message
|
||||
%patch9 -p1 -b .format
|
||||
# delete the include/tk dir, since we do not use the included tk headers
|
||||
rm -rf include/tk
|
||||
# Update a database
|
||||
tar -xozf %{SOURCE1}
|
||||
# Remove database byproducts brought by the database update
|
||||
rm -rf dict/dbfiles
|
||||
|
||||
|
||||
%build
|
||||
libtoolize && aclocal
|
||||
autoupdate
|
||||
autoreconf -i
|
||||
%if 0%{?fedora} >= 21 || 0%{?rhel} > 7
|
||||
export CFLAGS="%{?optflags} -DUSE_INTERP_RESULT"
|
||||
export CXXFLAGS="%{?optflags} -DUSE_INTERP_RESULT"
|
||||
%endif #0%{?fedora} >= 21 || 0%{?rhel} > 7
|
||||
%configure --enable-static=no --prefix=%{_datadir}/wordnet-%{version}/
|
||||
make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
# delete the libWN.la files (reasoning in the packaging guidelines)
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/libWN.la
|
||||
# Remove duplicate copies of docs installed by make install
|
||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/doc
|
||||
# Remove useless Makefiles installed by %%doc
|
||||
rm -rf doc/{html,ps,pdf}/Makefile*
|
||||
|
||||
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files
|
||||
%doc AUTHORS COPYING ChangeLog README
|
||||
%{_bindir}/wn
|
||||
%{_mandir}/man1/grind.1.gz
|
||||
%{_mandir}/man1/wn.1.gz
|
||||
%{_mandir}/man1/wnintro.1.gz
|
||||
%{_mandir}/man5/*.5.gz
|
||||
%{_mandir}/man7/*.7.gz
|
||||
%{_datadir}/%{name}-%{version}/
|
||||
%exclude %{_datadir}/%{name}-%{version}/lib/wnres/
|
||||
%{_libdir}/libWN.so.*
|
||||
|
||||
%files browser
|
||||
%{_bindir}/wishwn
|
||||
%{_bindir}/wnb
|
||||
%{_mandir}/man1/wishwn.1.gz
|
||||
%{_mandir}/man1/wnb.1.gz
|
||||
%{_datadir}/%{name}-%{version}/lib/wnres/
|
||||
|
||||
%files devel
|
||||
%{_mandir}/man3/*.3.gz
|
||||
%{_includedir}/wn.h
|
||||
%{_libdir}/libWN.so
|
||||
|
||||
%files doc
|
||||
%doc COPYING doc/{html,ps,pdf}
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-38
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-37
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-36
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-35
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-34
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Fri Mar 23 2018 Petr Pisar <ppisar@redhat.com> - 3.0-33
|
||||
- Modernize spec file
|
||||
- Update database to version 3.1
|
||||
|
||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-32
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Jan 24 2018 Merlin Mathesius <mmathesi@redhat.com> - 3.0-31
|
||||
- Cleanup spec file conditionals
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-30
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-29
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-28
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-27
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-26
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-25
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-24
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat May 31 2014 Björn Esser <bjoern.esser@gmail.com> - 3.0-23
|
||||
- fix build with tcl-8.6 (#1102111)
|
||||
- append `-DUSE_INTERP_RESULT` to C[XX]FLAGS on Fedora >= 21
|
||||
|
||||
* Wed May 21 2014 Jaroslav Škarvada <jskarvad@redhat.com> - 3.0-22
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86
|
||||
|
||||
* Wed Dec 04 2013 Petr Pisar <ppisar@redhat.com> - 3.0-21
|
||||
- Pass compilation with -Werror=format-security (bug #1037386)
|
||||
|
||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-20
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-19
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Thu Sep 06 2012 Petr Pisar <ppisar@redhat.com> - 3.0-18
|
||||
- wnb requires a font to start
|
||||
- Move Tk browser to sub-package wordnet-browser
|
||||
- Move alternative manual pages to wordnet-doc package
|
||||
- Do not package INSTALL instructions and correct URL
|
||||
- Modernize spec file
|
||||
|
||||
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-17
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-16
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-15
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Mon Nov 29 2010 Petr Pisar <ppisar@redhat.com> - 3.0-14
|
||||
- Remove Makefiles from documentation clashing in multiarch installation
|
||||
(#658118).
|
||||
|
||||
* Fri Apr 30 2010 Petr Pisar <ppisar@redhat.com> - 3.0-13
|
||||
- Add GPLv2+ license tag because wishwn(1) manual page is GPLv2+-licensed.
|
||||
|
||||
* Wed Apr 28 2010 Petr Pisar <ppisar@redhat.com> - 3.0-12
|
||||
- Devel subpackages requires tcl-devel and tk-devel.
|
||||
- Install wishwn(1) manual page
|
||||
|
||||
* Mon Apr 26 2010 Petr Pisar <ppisar@redhat.com> - 3.0-11
|
||||
- Fix error message printing (#585206)
|
||||
- Fix Source0 URL and Summary typo
|
||||
- Remove libX11-devel and libXft-devel BuildRequires as they are inherited
|
||||
from tk-devel. Keep tcl-devel as tcl.h is included directly.
|
||||
|
||||
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Wed Jun 10 2009 Caolan McNamara <caolanm@redhat.com> - 3.0-9
|
||||
- Fixed fedora BZ 504957 - references to non-existing dirs in wnb
|
||||
|
||||
* Wed May 27 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-8
|
||||
- Fixed issues with the doc files duplication and ownership
|
||||
|
||||
* Wed May 27 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-7
|
||||
- Modified the %%files sections for both packages to only include the link in
|
||||
the devel package and the .so in the main package.
|
||||
- Added %%pre and %%post sections
|
||||
|
||||
* Wed May 27 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-6
|
||||
- Added commands to build only shared libs and remove libtool's .la files
|
||||
before packaging
|
||||
|
||||
* Tue May 19 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-5
|
||||
- Added the libtool patch to build libWN.so dynamic lib
|
||||
|
||||
* Wed Feb 18 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-4
|
||||
- Added Tom 'spot' Callaway's patch to not include the tk.h and tkDecls.h from
|
||||
the upstream source, but instead rely on system tk headers
|
||||
|
||||
* Sun Jan 18 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-3
|
||||
- renamed rpm from WordNet to wordnet to be more consistent with other distos
|
||||
- split the devel package
|
||||
- borrowed more patches from the debian package
|
||||
|
||||
* Tue Jan 13 2009 Steven Fernandez <steve@lonetwin.net> - 3.0-2
|
||||
- patch to fix CVE-2008-3908
|
||||
- Added the wishwn man page from the debian wordnet package
|
||||
|
||||
* Sat Nov 29 2008 Steven Fernandez <steve@lonetwin.net> - 3.0-1
|
||||
- First build for Fedora 10
|
||||
|
Loading…
Reference in New Issue
Block a user