mirror of
git://slackware.nl/current.git
synced 2024-12-28 09:59:53 +01:00
ba4217f718
a/elvis-2.2_0-x86_64-5.txz: Rebuilt. Don't make /usr/bin/{ex,vi} symlinks. a/kernel-generic-5.4.11-x86_64-1.txz: Upgraded. a/kernel-huge-5.4.11-x86_64-1.txz: Upgraded. a/kernel-modules-5.4.11-x86_64-1.txz: Upgraded. a/nvi-1.81.6-x86_64-1.txz: Added. This is an implementation of the classic ex/vi text editor written by Keith Bostic. Due to this having UTF8 support which elvis lacks, we'll have it take over the ex/vi symlinks if they aren't already pointing to a different choice. Note that the removal of vi/ex symlinks from the elvis and vim packages might cause your ex/vi symlinks to point to this after all the ex/vi packages have been upgraded. You can set them to your preferences using pkgtool -> Setup -> vi-ex. a/pkgtools-15.0-noarch-29.txz: Rebuilt. Added an installer/pkgtool menu to select the default ex/vi editor. ap/vim-8.2.0114-x86_64-1.txz: Upgraded. Don't make /usr/bin/{ex,vi} symlinks. d/kernel-headers-5.4.11-x86-1.txz: Upgraded. d/python-setuptools-45.0.0-x86_64-1.txz: Upgraded. k/kernel-source-5.4.11-noarch-1.txz: Upgraded. l/imagemagick-7.0.9_15-x86_64-1.txz: Upgraded. n/ethtool-5.4-x86_64-1.txz: Upgraded. xap/vim-gvim-8.2.0114-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
61 lines
1.5 KiB
Diff
61 lines
1.5 KiB
Diff
#! /bin/sh /usr/share/dpatch/dpatch-run
|
|
## 21exrc_writability_check.dpatch by <hesso@pool.math.tu-berlin.de>
|
|
##
|
|
## DP: No description.
|
|
|
|
@DPATCH@
|
|
diff -Naur nvi-1.81.6.orig/ex/ex_init.c nvi-1.81.6/ex/ex_init.c
|
|
--- nvi-1.81.6.orig/ex/ex_init.c 2007-11-18 17:41:42.000000000 +0100
|
|
+++ nvi-1.81.6/ex/ex_init.c 2008-05-01 18:24:45.000000000 +0200
|
|
@@ -26,6 +26,9 @@
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
+#include <pwd.h>
|
|
+#include <grp.h>
|
|
+
|
|
#include "../common/common.h"
|
|
#include "tag.h"
|
|
#include "pathnames.h"
|
|
@@ -346,6 +349,9 @@
|
|
int nf1, nf2;
|
|
char *a, *b, buf[MAXPATHLEN];
|
|
|
|
+ struct group *grp_p;
|
|
+ struct passwd *pwd_p;
|
|
+
|
|
/* Check for the file's existence. */
|
|
if (stat(path, sbp))
|
|
return (NOEXIST);
|
|
@@ -359,10 +365,30 @@
|
|
}
|
|
|
|
/* Check writeability. */
|
|
- if (sbp->st_mode & (S_IWGRP | S_IWOTH)) {
|
|
+ if (sbp->st_mode & S_IWOTH) {
|
|
etype = WRITER;
|
|
goto denied;
|
|
}
|
|
+ if (sbp->st_mode & S_IWGRP) {
|
|
+ /* on system error (getgrgid or getpwnam return NULL) set etype to WRITER
|
|
+ * and continue execution */
|
|
+ if( (grp_p = getgrgid(sbp->st_gid)) == NULL) {
|
|
+ etype = WRITER;
|
|
+ goto denied;
|
|
+ }
|
|
+
|
|
+ /* lookup the group members' uids for an uid different from euid */
|
|
+ while( ( *(grp_p->gr_mem) ) != NULL) { /* gr_mem is a null-terminated array */
|
|
+ if( (pwd_p = getpwnam(*(grp_p->gr_mem)++)) == NULL) {
|
|
+ etype = WRITER;
|
|
+ goto denied;
|
|
+ }
|
|
+ if(pwd_p->pw_uid != euid) {
|
|
+ etype = WRITER;
|
|
+ goto denied;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
return (RCOK);
|
|
|
|
denied: a = msg_print(sp, path, &nf1);
|