Accepting request 727010 from shells
Automatic submission by obs-autosubmit OBS-URL: https://build.opensuse.org/request/show/727010 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/tcsh?expand=0&rev=64
This commit is contained in:
commit
b77186d5f1
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
--- sh.hist.c
|
--- sh.hist.c
|
||||||
+++ sh.hist.c 2017-07-19 10:01:20.795354927 +0000
|
+++ sh.hist.c 2017-07-19 10:01:20.795354927 +0000
|
||||||
@@ -1274,6 +1274,11 @@ rechist(Char *fname, int ref)
|
@@ -1278,6 +1278,11 @@ rechist(Char *fname, int ref)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (merge) {
|
if (merge) {
|
||||||
@ -16,7 +16,7 @@
|
|||||||
if (lock) {
|
if (lock) {
|
||||||
#ifndef WINNT_NATIVE
|
#ifndef WINNT_NATIVE
|
||||||
char *lockpath = strsave(short2str(fname));
|
char *lockpath = strsave(short2str(fname));
|
||||||
@@ -1283,6 +1288,7 @@ rechist(Char *fname, int ref)
|
@@ -1287,6 +1292,7 @@ rechist(Char *fname, int ref)
|
||||||
cleanup_push(lockpath, dotlock_cleanup);
|
cleanup_push(lockpath, dotlock_cleanup);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -14,18 +14,18 @@ https://bugzilla.redhat.com/show_bug.cgi?id=879371
|
|||||||
Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||||
|
|
||||||
---
|
---
|
||||||
sh.c | 102 ++++++++++++++++++++++++++++++++++++-------------
|
sh.c | 102 ++++++++++++++++++++++++++++++++++++------------
|
||||||
sh.decls.h | 4 +
|
sh.decls.h | 4 +
|
||||||
sh.dol.c | 2
|
sh.dol.c | 2
|
||||||
sh.err.c | 16 +++++++
|
sh.err.c | 16 +++++++
|
||||||
sh.h | 18 ++++++++
|
sh.h | 18 ++++++++
|
||||||
sh.hist.c | 126 +++++++++++++++++++++++++++++--------------------------------
|
sh.hist.c | 127 ++++++++++++++++++++++++++++---------------------------------
|
||||||
sh.lex.c | 8 +--
|
sh.lex.c | 8 +--
|
||||||
sh.sem.c | 2
|
sh.sem.c | 2
|
||||||
8 files changed, 178 insertions(+), 100 deletions(-)
|
8 files changed, 178 insertions(+), 101 deletions(-)
|
||||||
|
|
||||||
--- sh.c
|
--- sh.c
|
||||||
+++ sh.c 2019-05-09 08:16:41.673852638 +0000
|
+++ sh.c 2019-08-22 13:02:31.780361102 +0000
|
||||||
@@ -138,6 +138,7 @@ struct saved_state {
|
@@ -138,6 +138,7 @@ struct saved_state {
|
||||||
int cantell;
|
int cantell;
|
||||||
struct Bin B;
|
struct Bin B;
|
||||||
@ -245,7 +245,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
--- sh.decls.h
|
--- sh.decls.h
|
||||||
+++ sh.decls.h 2019-05-09 08:16:41.673852638 +0000
|
+++ sh.decls.h 2019-08-22 13:02:31.780361102 +0000
|
||||||
@@ -37,6 +37,7 @@
|
@@ -37,6 +37,7 @@
|
||||||
*/
|
*/
|
||||||
extern Char *gethdir (const Char *);
|
extern Char *gethdir (const Char *);
|
||||||
@ -272,7 +272,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
extern void sethistory (int);
|
extern void sethistory (int);
|
||||||
|
|
||||||
--- sh.dol.c
|
--- sh.dol.c
|
||||||
+++ sh.dol.c 2019-05-09 08:16:41.673852638 +0000
|
+++ sh.dol.c 2019-08-22 13:02:31.780361102 +0000
|
||||||
@@ -1117,6 +1117,6 @@ again:
|
@@ -1117,6 +1117,6 @@ again:
|
||||||
*obp = 0;
|
*obp = 0;
|
||||||
tmp = short2str(obuf);
|
tmp = short2str(obuf);
|
||||||
@ -282,7 +282,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
cleanup_until(&inheredoc);
|
cleanup_until(&inheredoc);
|
||||||
}
|
}
|
||||||
--- sh.err.c
|
--- sh.err.c
|
||||||
+++ sh.err.c 2019-05-09 08:16:41.677852563 +0000
|
+++ sh.err.c 2019-08-22 13:02:31.780361102 +0000
|
||||||
@@ -511,6 +511,22 @@ open_cleanup(void *xptr)
|
@@ -511,6 +511,22 @@ open_cleanup(void *xptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,7 +307,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
{
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
--- sh.h
|
--- sh.h
|
||||||
+++ sh.h 2019-05-09 08:16:41.677852563 +0000
|
+++ sh.h 2019-08-22 13:02:31.784361027 +0000
|
||||||
@@ -49,6 +49,24 @@
|
@@ -49,6 +49,24 @@
|
||||||
# include <inttypes.h>
|
# include <inttypes.h>
|
||||||
#endif
|
#endif
|
||||||
@ -334,7 +334,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
typedef unsigned long intptr_t;
|
typedef unsigned long intptr_t;
|
||||||
#endif
|
#endif
|
||||||
--- sh.hist.c
|
--- sh.hist.c
|
||||||
+++ sh.hist.c 2019-05-09 08:36:00.679789483 +0000
|
+++ sh.hist.c 2019-08-22 13:02:44.684119766 +0000
|
||||||
@@ -32,6 +32,8 @@
|
@@ -32,6 +32,8 @@
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
#include <stdio.h> /* for rename(2), grr. */
|
#include <stdio.h> /* for rename(2), grr. */
|
||||||
@ -531,15 +531,15 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
rechist(Char *fname, int ref)
|
rechist(Char *fname, int ref)
|
||||||
{
|
{
|
||||||
- Char *snum, *rs;
|
- Char *snum, *rs;
|
||||||
- int fp, ftmp, oldidfds;
|
- int fp, ftmp, oldidfds, phup_disabled_tmp;
|
||||||
+ Char *snum;
|
+ Char *snum;
|
||||||
+ int fd = -1, ftmp, oldidfds;
|
+ int fd = -1, ftmp, oldidfds, phup_disabled_tmp;
|
||||||
struct varent *shist;
|
struct varent *shist;
|
||||||
- char path[MAXPATHLEN];
|
- char path[MAXPATHLEN];
|
||||||
struct stat st;
|
struct stat st;
|
||||||
static Char *dumphist[] = {STRhistory, STRmhT, 0, 0};
|
static Char *dumphist[] = {STRhistory, STRmhT, 0, 0};
|
||||||
|
|
||||||
@@ -1290,50 +1283,49 @@ rechist(Char *fname, int ref)
|
@@ -1294,52 +1287,50 @@ rechist(Char *fname, int ref)
|
||||||
cleanup_push(lockpath, dotlock_cleanup);
|
cleanup_push(lockpath, dotlock_cleanup);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -561,6 +561,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
- if (fp == -1) {
|
- if (fp == -1) {
|
||||||
- didfds = oldidfds;
|
- didfds = oldidfds;
|
||||||
- cleanup_until(fname);
|
- cleanup_until(fname);
|
||||||
|
- phup_disabled = phup_disabled_tmp;
|
||||||
- return;
|
- return;
|
||||||
+ if (fd <= 0) {
|
+ if (fd <= 0) {
|
||||||
+ /* Open .history file for writing (if not open yet). */
|
+ /* Open .history file for writing (if not open yet). */
|
||||||
@ -599,6 +600,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
- (void)ReplaceFile( short2str(fname),path,NULL,0,NULL,NULL);
|
- (void)ReplaceFile( short2str(fname),path,NULL,0,NULL,NULL);
|
||||||
-#endif
|
-#endif
|
||||||
cleanup_until(fname);
|
cleanup_until(fname);
|
||||||
|
phup_disabled = phup_disabled_tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -615,7 +617,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
|
|
||||||
if (fname != NULL)
|
if (fname != NULL)
|
||||||
loadhist_cmd[2] = fname;
|
loadhist_cmd[2] = fname;
|
||||||
@@ -1342,17 +1334,19 @@ loadhist(Char *fname, int mflg)
|
@@ -1348,17 +1339,19 @@ loadhist(Char *fname, int mflg)
|
||||||
else
|
else
|
||||||
loadhist_cmd[2] = STRtildothist;
|
loadhist_cmd[2] = STRtildothist;
|
||||||
|
|
||||||
@ -640,7 +642,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
|
|
||||||
void
|
void
|
||||||
--- sh.lex.c
|
--- sh.lex.c
|
||||||
+++ sh.lex.c 2019-05-09 08:16:41.677852563 +0000
|
+++ sh.lex.c 2019-08-22 13:02:31.784361027 +0000
|
||||||
@@ -1608,7 +1608,7 @@ wide_read(int fildes, Char *buf, size_t
|
@@ -1608,7 +1608,7 @@ wide_read(int fildes, Char *buf, size_t
|
||||||
/* Throwing away possible partial multibyte characters on error if the
|
/* Throwing away possible partial multibyte characters on error if the
|
||||||
stream is not seekable */
|
stream is not seekable */
|
||||||
@ -678,7 +680,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
|||||||
fbuf = xcalloc(2, sizeof(Char **));
|
fbuf = xcalloc(2, sizeof(Char **));
|
||||||
fblocks = 1;
|
fblocks = 1;
|
||||||
--- sh.sem.c
|
--- sh.sem.c
|
||||||
+++ sh.sem.c 2019-05-09 08:16:41.677852563 +0000
|
+++ sh.sem.c 2019-08-22 13:02:31.784361027 +0000
|
||||||
@@ -905,7 +905,7 @@ doio(struct command *t, int *pipein, int
|
@@ -905,7 +905,7 @@ doio(struct command *t, int *pipein, int
|
||||||
fd = xopen(tmp, O_WRONLY|O_APPEND|O_LARGEFILE);
|
fd = xopen(tmp, O_WRONLY|O_APPEND|O_LARGEFILE);
|
||||||
#else /* !O_APPEND */
|
#else /* !O_APPEND */
|
50
tcsh-6.21.00-sighup-deadlock.patch
Normal file
50
tcsh-6.21.00-sighup-deadlock.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
tcsh can deadlock with itself if savehist is confgured with "merge" and
|
||||||
|
"lock", and two SIGHUPs are received in rapid succession. The
|
||||||
|
mechanism of the deadlock is the first SIGHUP triggers a rechist() and
|
||||||
|
while that rechist() is executing (and after it has created the lock
|
||||||
|
file), another SIGHUP triggers a another rechist() which then waits
|
||||||
|
forever for the lock the the first rechist() created to be released
|
||||||
|
(which will never happen).
|
||||||
|
|
||||||
|
---
|
||||||
|
tcsh-6.21.00/sh.hist.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- tcsh-6.21.00/sh.hist.c
|
||||||
|
+++ tcsh-6.21.00/sh.hist.c 2019-08-22 12:05:25.800474245 +0000
|
||||||
|
@@ -1219,7 +1219,7 @@ void
|
||||||
|
rechist(Char *fname, int ref)
|
||||||
|
{
|
||||||
|
Char *snum, *rs;
|
||||||
|
- int fp, ftmp, oldidfds;
|
||||||
|
+ int fp, ftmp, oldidfds, phup_disabled_tmp;
|
||||||
|
struct varent *shist;
|
||||||
|
char path[MAXPATHLEN];
|
||||||
|
struct stat st;
|
||||||
|
@@ -1227,6 +1227,10 @@ rechist(Char *fname, int ref)
|
||||||
|
|
||||||
|
if (fname == NULL && !ref)
|
||||||
|
return;
|
||||||
|
+
|
||||||
|
+ phup_disabled_tmp = phup_disabled;
|
||||||
|
+ phup_disabled = 1;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* If $savehist is just set, we use the value of $history
|
||||||
|
* else we use the value in $savehist
|
||||||
|
@@ -1301,6 +1305,7 @@ rechist(Char *fname, int ref)
|
||||||
|
if (fp == -1) {
|
||||||
|
didfds = oldidfds;
|
||||||
|
cleanup_until(fname);
|
||||||
|
+ phup_disabled = phup_disabled_tmp;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* Try to preserve ownership and permissions of the original history file */
|
||||||
|
@@ -1325,6 +1330,7 @@ rechist(Char *fname, int ref)
|
||||||
|
(void)ReplaceFile( short2str(fname),path,NULL,0,NULL,NULL);
|
||||||
|
#endif
|
||||||
|
cleanup_until(fname);
|
||||||
|
+ phup_disabled = phup_disabled_tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 22 12:27:18 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
- Add patch tcsh-6.21.00-sighup-deadlock.patch from upstream list
|
||||||
|
* Do not (re)run SIGHUP handler during rewrite history
|
||||||
|
* Port and rename patch tcsh-6.18.03-history-file-locking.patch
|
||||||
|
which now becomes tcsh-6.21.0-history-file-locking.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 9 08:50:56 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
Thu May 9 08:50:56 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
||||||
|
|
||||||
|
@ -32,8 +32,10 @@ Patch2: tcsh-6.16.00-norm-cmd.dif
|
|||||||
Patch4: tcsh-6.18.03-colorls.dif
|
Patch4: tcsh-6.18.03-colorls.dif
|
||||||
Patch5: tcsh-6.17.06-dspmbyte.dif
|
Patch5: tcsh-6.17.06-dspmbyte.dif
|
||||||
Patch6: tcsh-6.18.03-catalogs.dif
|
Patch6: tcsh-6.18.03-catalogs.dif
|
||||||
|
# PATCH-FIX-UPSTREAM Do not (re)run SIGHUP handler during rewrite history
|
||||||
|
Patch7: tcsh-6.21.00-sighup-deadlock.patch
|
||||||
# PATCH-FIX-SUSE add history file locking (bsc#901076)
|
# PATCH-FIX-SUSE add history file locking (bsc#901076)
|
||||||
Patch9: tcsh-6.18.03-history-file-locking.patch
|
Patch9: tcsh-6.21.0-history-file-locking.patch
|
||||||
Patch10: tcsh-6.18.03-history-merge.dif
|
Patch10: tcsh-6.18.03-history-merge.dif
|
||||||
# PATCH-FIX-SUSE fix history file locking: first unlock then close
|
# PATCH-FIX-SUSE fix history file locking: first unlock then close
|
||||||
Patch11: tcsh-6.19.00-history-file-locking-order.patch
|
Patch11: tcsh-6.19.00-history-file-locking-order.patch
|
||||||
@ -64,6 +66,7 @@ correction, a history mechanism, job control, and a C-like syntax.
|
|||||||
%patch4 -b .colorls
|
%patch4 -b .colorls
|
||||||
%patch5 -b .dspmbyte
|
%patch5 -b .dspmbyte
|
||||||
%patch6 -b .catalogs
|
%patch6 -b .catalogs
|
||||||
|
%patch7 -p1 -b .sighup
|
||||||
%patch9 -b .histlock
|
%patch9 -b .histlock
|
||||||
%patch10 -b .histmerg
|
%patch10 -b .histmerg
|
||||||
%patch11 -b .histlckord
|
%patch11 -b .histlckord
|
||||||
|
Loading…
Reference in New Issue
Block a user