Bring in important patches from the upstream

Update to the upstream git @ 7f2369ac
This commit is contained in:
Vladis Dronov 2022-09-27 20:32:04 +02:00
parent 7f2369acb1
commit fb297cac9b
3 changed files with 315 additions and 5 deletions

View File

@ -0,0 +1,75 @@
From b3ab5461f1a02aa0a07a6f50bc2fa4da057193d1 Mon Sep 17 00:00:00 2001
From: Dominique <dominique.pelle@gmail.com>
Date: Sun, 8 May 2022 08:27:32 +0200
Subject: [PATCH 1/2] fix: access beyond end of string when search called by
fails
Content-type: text/plain
findcalledby() returned a string which was not '\0' terminated.
That string is later output with the snprintf %s format which
accessed beyond the end of the string. Bug caused a crash on macOS
with M1 processor and was also causing a crash on Linux too when
building with asan (address sanitizer).
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
---
src/find.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/find.c b/src/find.c
index d7a66f0..e8f1141 100644
--- a/src/find.c
+++ b/src/find.c
@@ -1044,7 +1044,7 @@ char *
findcalledby(char *pattern)
{
char file[PATHLEN + 1]; /* source file name */
- static char found_caller = 'n'; /* seen calling function? */
+ static char found_caller[2] = "n"; /* seen calling function? */
BOOL macro = NO;
if (invertedindex == YES) {
@@ -1057,12 +1057,12 @@ findcalledby(char *pattern)
case FCNDEF:
if (dbseek(p->lineoffset) != -1 &&
scanpast('\t') != NULL) { /* skip def */
- found_caller = 'y';
+ found_caller[0] = 'y';
findcalledbysub(srcfiles[p->fileindex], macro);
}
}
}
- return(&found_caller);
+ return(&found_caller[0]);
}
/* find the function definition(s) */
while (scanpast('\t') != NULL) {
@@ -1072,7 +1072,7 @@ findcalledby(char *pattern)
skiprefchar(); /* save file name */
fetch_string_from_dbase(file, sizeof(file));
if (*file == '\0') { /* if end of symbols */
- return(&found_caller);
+ return(&found_caller[0]);
}
progress("Search", searchcount, nsrcfiles);
break;
@@ -1087,14 +1087,14 @@ findcalledby(char *pattern)
case FCNDEF:
skiprefchar(); /* match name to pattern */
if (match()) {
- found_caller = 'y';
+ found_caller[0] = 'y';
findcalledbysub(file, macro);
}
break;
}
}
- return (&found_caller);
+ return (&found_caller[0]);
}
/* find this term, which can be a regular expression */
--
2.37.3

View File

@ -0,0 +1,229 @@
From b64638020badf92b36424c06bda6e49942f77cd6 Mon Sep 17 00:00:00 2001
From: Dominique <dominique.pelle@gmail.com>
Date: Sun, 8 May 2022 08:52:41 +0200
Subject: [PATCH 2/2] docs: typo fixes in man page and in source code comments
Content-type: text/plain
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
---
contrib/webcscope/hilite.c | 6 +++---
doc/xcscope.1 | 8 ++++----
src/build.c | 2 +-
src/command.c | 2 +-
src/compath.c | 2 +-
src/crossref.c | 2 +-
src/find.c | 4 ++--
src/invlib.c | 2 +-
src/main.c | 4 ++--
src/mouse.c | 2 +-
src/snprintf.c | 2 +-
11 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/contrib/webcscope/hilite.c b/contrib/webcscope/hilite.c
index 4f5af07..feacf0f 100644
--- a/contrib/webcscope/hilite.c
+++ b/contrib/webcscope/hilite.c
@@ -17,7 +17,7 @@
For HTML fragment generation:
CHTM file.c > file.htm
- - Some input convertion required to use this
+ - Some input conversion required to use this
code as CGI module. Will be done soon.
- Optimization required for blocks of EOL
comments
@@ -51,7 +51,7 @@
#define MODE_STRING 8
-int is_delimeter(char c)
+int is_delimiter(char c)
{
int ii=0;
char dlms[] =
@@ -318,7 +318,7 @@ int main(int _argc, char** _argv)
{
buf[bufidx++] = c;
buf[bufidx] = 0;
- if (is_delimeter(c))
+ if (is_delimiter(c))
{
kw = 0;
if (bufidx>2)
diff --git a/doc/xcscope.1 b/doc/xcscope.1
index fa4199c..5bf0de1 100644
--- a/doc/xcscope.1
+++ b/doc/xcscope.1
@@ -1,6 +1,6 @@
'\" t
.\" The xcscope.el man page
-.\" Origionally written by Darryl Okahata, Apr 2000
+.\" Originally written by Darryl Okahata, Apr 2000
.\"
.\" Converted to a man page July 20, 2004 by Neil Horman <nhorman@redhat.com>
.\"
@@ -152,7 +152,7 @@ cscope database directories:
.P
If a search is initiated from a .c file in /users/jdoe/sources/proj1
then (assuming the variable, `cscope-database-regexps', is not set)
-/users/jdoe/sources/proj1 will be used as the cscope data base directory.
+/users/jdoe/sources/proj1 will be used as the cscope database directory.
Only matches in files in /users/jdoe/sources/proj1 will be found. This
can be remedied by typing "C-c s a" and then "M-del" to remove single
path element in order to use a cscope database directory of
@@ -173,7 +173,7 @@ C-c s d Find global definition.
C-c s g Find global definition (alternate binding).
C-c s G Find global definition without prompting.
C-c s c Find functions calling a function.
-C-c s C Find called functions (list functions called
+C-c s C Find called functions (list functions called)
C-c s t Find text string.
C-c s e Find egrep pattern.
C-c s f Find a file.
@@ -527,7 +527,7 @@ done.
.P
1. The script, "cscope-indexer", uses a sed command to determine
-what is and is not a C/C++/lex/yacc source file. It's idea of a
+what is and is not a C/C++/lex/yacc source file. Its idea of a
source file may not correspond to yours.
.P
diff --git a/src/build.c b/src/build.c
index 557e660..4d4e201 100644
--- a/src/build.c
+++ b/src/build.c
@@ -133,7 +133,7 @@ samelist(FILE *oldrefs, char **names, int count)
}
-/* create the file name(s) used for a new cross-referene */
+/* create the file name(s) used for a new cross-reference */
void setup_build_filenames(char *reffile)
{
diff --git a/src/command.c b/src/command.c
index dcb5278..75fae6e 100644
--- a/src/command.c
+++ b/src/command.c
@@ -890,7 +890,7 @@ countrefs(void)
filelen = 4; /* strlen("File") */
fcnlen = 8; /* strlen("Function") */
numlen = 0;
- /* HBB NOTE 2012-04-07: it may look like we shouldn't assing tempstring here,
+ /* HBB NOTE 2012-04-07: it may look like we shouldn't assign tempstring here,
* since it's not used. But it has to be assigned just so the return value
* of fscanf will actually reach 4. */
while (EOF != (i = fscanf(refsfound,
diff --git a/src/compath.c b/src/compath.c
index 037d341..fadca1f 100644
--- a/src/compath.c
+++ b/src/compath.c
@@ -40,7 +40,7 @@
*
* WARNING: since pathname is altered by this function, it should
* be located in a temporary buffer. This avoids the problem
- * of accidently changing strings obtained from makefiles
+ * of accidentally changing strings obtained from makefiles
* and stored in global structures.
*/
diff --git a/src/crossref.c b/src/crossref.c
index 549bc6a..7304fd6 100644
--- a/src/crossref.c
+++ b/src/crossref.c
@@ -328,7 +328,7 @@ putcrossref(void)
if (c < ' ') {
++i;
- /* skip blanks before a preprocesor keyword */
+ /* skip blanks before a preprocessor keyword */
/* note: don't use isspace() because \f and \v
are used for keywords */
while ((j = my_yytext[i]) == ' ' || j == '\t') {
diff --git a/src/find.c b/src/find.c
index d7a66f0..0261161 100644
--- a/src/find.c
+++ b/src/find.c
@@ -975,7 +975,7 @@ fetch_string_from_dbase(char *s, size_t length)
}
-/* scan past the next occurence of this character in the cross-reference */
+/* scan past the next occurrence of this character in the cross-reference */
char *
scanpast(char c)
{
@@ -1035,7 +1035,7 @@ lcasify(char *s)
/* find the functions called by this function */
-/* HBB 2000/05/05: for consitency of calling interface between the
+/* HBB 2000/05/05: for consistency of calling interface between the
* different 'find...()' functions, this now returns a char pointer,
* too. Implemented as a pointer to static storage containing 'y' or
* 'n', for the boolean result values YES and NO */
diff --git a/src/invlib.c b/src/invlib.c
index cd15c35..cdccd32 100644
--- a/src/invlib.c
+++ b/src/invlib.c
@@ -106,7 +106,7 @@ invmake(char *invname, char *invpost, FILE *infile)
unsigned char *s;
long num;
int i;
- long fileindex = 0; /* initialze, to avoid warning */
+ long fileindex = 0; /* initialize, to avoid warning */
unsigned postsize = POSTINC * sizeof(*POST);
unsigned long *intptr;
char line[TERMMAX];
diff --git a/src/main.c b/src/main.c
index d28271c..2ffabc3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -547,7 +547,7 @@ cscope: Could not create private temp dir %s\n",
/* put it in the home directory if the database may not be
* up-to-date or doesn't exist in the relative directory,
* so a database in the current directory will be
- * used instead of failing to open a non-existant database in
+ * used instead of failing to open a non-existing database in
* the home directory
*/
snprintf(path, sizeof(path), "%s/%s", home, reffile);
@@ -884,7 +884,7 @@ cscope: cannot read source file name from file %s\n",
break;
#endif
}
- /* execute the commmand, updating the display if necessary */
+ /* execute the command, updating the display if necessary */
if (command(c) == YES) {
display();
}
diff --git a/src/mouse.c b/src/mouse.c
index ea75b37..4f55400 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -94,7 +94,7 @@ mouseinit(void)
emacsviterm = YES;
mouse = YES;
}
- /* the MOUSE enviroment variable is for 5620 terminal programs that have
+ /* the MOUSE environment variable is for 5620 terminal programs that have
mouse support but the TERM environment variable is the same as a
terminal without a mouse, such as myx */
else if (strcmp(mygetenv("MOUSE", ""), "myx") == 0) {
diff --git a/src/snprintf.c b/src/snprintf.c
index 3981151..5cb0afe 100644
--- a/src/snprintf.c
+++ b/src/snprintf.c
@@ -1299,7 +1299,7 @@ again:
* C99 says: "If the `0' and `-' flags both appear, the `0' flag is
* ignored." (7.19.6.1, 6)
*/
- if (flags & PRINT_F_MINUS) /* Left justifty. */
+ if (flags & PRINT_F_MINUS) /* Left justify. */
padlen = -padlen;
else if (flags & PRINT_F_ZERO && padlen > 0) {
if (sign != 0) { /* Sign. */
--
2.37.3

View File

@ -1,7 +1,7 @@
Summary: C source code tree search and browse tool
Name: cscope
Version: 15.9
Release: 16%{?dist}
Release: 17%{?dist}
Source0: https://downloads.sourceforge.net/project/%{name}/%{name}/v%{version}/%{name}-%{version}.tar.gz
URL: http://cscope.sourceforge.net
License: BSD and GPLv2+
@ -21,11 +21,14 @@ Patch5: cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch
Patch6: cscope-6-doc-cscope.1-Fix-hyphens.patch
Patch7: cscope-7-fscanner-swallow-function-as-parameters.patch
Patch8: cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch
Patch9: cscope-9-fix-access-beyond-end-of-string.patch
Patch10: cscope-a-docs-typo-fixes-in-man-page-and-comments.patch
# distrubution patches which were not upstreamed
Patch9: dist-1-coverity-fixes.patch
Patch10: dist-2-cscope-indexer-help.patch
Patch11: dist-3-add-selftests.patch
Patch12: dist-4-fix-printf.patch
Patch11: dist-1-coverity-fixes.patch
Patch12: dist-2-cscope-indexer-help.patch
Patch13: dist-3-add-selftests.patch
Patch14: dist-4-fix-printf.patch
%define cscope_share_path %{_datadir}/cscope
%if !0%{?rhel} && 0%{?fedora} < 36
@ -106,6 +109,9 @@ rm -f %{emacs_lisp_path}/xcscope.el
rm -f %{vim_plugin_path}/cctree.vim
%changelog
* Tue Sep 27 2022 Vladis Dronov <vdronov@redhat.com> - 15.9-17
- Update to the upstream git @ 7f2369ac
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 15.9-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild