rediff hardening write patch

This commit is contained in:
Till Maas 2010-03-28 10:09:39 +00:00
parent d3d3920a27
commit b2fed5a66d
3 changed files with 62 additions and 63 deletions

View File

@ -1,61 +0,0 @@
diff --git a/tty.c b/tty.c
index 9d30ed9..2535bf3 100644
--- a/tty.c
+++ b/tty.c
@@ -283,7 +283,8 @@ tty_free(struct tty *tty)
void
tty_raw(struct tty *tty, const char *s)
{
- write(tty->fd, s, strlen(s));
+ if (write(tty->fd, s, strlen(s)) == -1)
+ fatal("write failed");
}
void
@@ -316,7 +317,9 @@ tty_puts(struct tty *tty, const char *s)
buffer_write(tty->out, s, strlen(s));
if (tty->log_fd != -1)
- write(tty->log_fd, s, strlen(s));
+ if (write(tty->log_fd, s, strlen(s)) == -1)
+ fatal("write failed");
+
}
void
@@ -342,7 +345,8 @@ tty_putc(struct tty *tty, u_char ch)
}
if (tty->log_fd != -1)
- write(tty->log_fd, &ch, 1);
+ if (write(tty->log_fd, &ch, 1) == -1)
+ fatal("write failed");
}
void
@@ -355,7 +359,9 @@ tty_pututf8(struct tty *tty, const struct grid_utf8 *gu)
break;
buffer_write8(tty->out, gu->data[i]);
if (tty->log_fd != -1)
- write(tty->log_fd, &gu->data[i], 1);
+ if (write(tty->log_fd, &gu->data[i], 1) == -1)
+ fatal("write failed");
+
}
tty->cx += gu->width;
diff --git a/window.c b/window.c
index f4be17d..318d2e9 100644
--- a/window.c
+++ b/window.c
@@ -516,7 +516,9 @@ window_pane_spawn(struct window_pane *wp, const char *cmd, const char *shell,
return (-1);
case 0:
if (chdir(wp->cwd) != 0)
- chdir("/");
+ if (chdir("/") <0)
+ fatal("chdir failed");
+
if (tcgetattr(STDIN_FILENO, &tio2) != 0)
fatal("tcgetattr failed");

57
tmux-1.2-writehard.patch Normal file
View File

@ -0,0 +1,57 @@
diff -up tmux-1.2/tty.c.writehard tmux-1.2/tty.c
--- tmux-1.2/tty.c.writehard 2010-03-08 15:53:49.000000000 +0100
+++ tmux-1.2/tty.c 2010-03-28 12:01:49.335023195 +0200
@@ -300,7 +300,8 @@ tty_free(struct tty *tty)
void
tty_raw(struct tty *tty, const char *s)
{
- write(tty->fd, s, strlen(s));
+ if (write(tty->fd, s, strlen(s)) == -1)
+ fatal("write failed");
}
void
@@ -333,7 +334,8 @@ tty_puts(struct tty *tty, const char *s)
bufferevent_write(tty->event, s, strlen(s));
if (tty->log_fd != -1)
- write(tty->log_fd, s, strlen(s));
+ if(write(tty->log_fd, s, strlen(s)) == -1)
+ fatal("write failed");
}
void
@@ -359,7 +361,8 @@ tty_putc(struct tty *tty, u_char ch)
}
if (tty->log_fd != -1)
- write(tty->log_fd, &ch, 1);
+ if (write(tty->log_fd, &ch, 1) == -1)
+ fatal("write failed");
}
void
@@ -370,7 +373,8 @@ tty_pututf8(struct tty *tty, const struc
size = grid_utf8_size(gu);
bufferevent_write(tty->event, gu->data, size);
if (tty->log_fd != -1)
- write(tty->log_fd, gu->data, size);
+ if(write(tty->log_fd, gu->data, size) == -1)
+ fatal("write failed");
tty->cx += gu->width;
}
diff -up tmux-1.2/window.c.writehard tmux-1.2/window.c
--- tmux-1.2/window.c.writehard 2010-02-08 19:10:07.000000000 +0100
+++ tmux-1.2/window.c 2010-03-28 12:03:07.316900726 +0200
@@ -518,7 +518,9 @@ window_pane_spawn(struct window_pane *wp
return (-1);
case 0:
if (chdir(wp->cwd) != 0)
- chdir("/");
+ if (chdir("/") <0)
+ fatal("chdir failed");
+
if (tcgetattr(STDIN_FILENO, &tio2) != 0)
fatal("tcgetattr failed");

View File

@ -15,7 +15,9 @@ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.
Patch0: tmux-1.0-02_fix_wrong_location.diff
Patch1: tmux-1.0-03_proper_socket_handling.diff
Patch2: tmux-1.0-04_dropping_unnecessary_privileges.diff
#Patch3: tmux-1.0-06_hardening_write_return.diff
# 2010-03-28: Submitted upstream:
# https://sourceforge.net/tracker/?func=detail&aid=2977945&group_id=200378&atid=973264
Patch3: tmux-1.2-writehard.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: ncurses-devel
@ -32,7 +34,7 @@ as GNU Screen.
%patch0 -p1 -b .location
%patch1 -p1 -b .sockethandling
%patch2 -p1 -b .dropprivs
#%patch3 -p1 -b .writehard
%patch3 -p1 -b .writehard
%build
%configure
@ -61,6 +63,7 @@ getent group tmux >/dev/null || groupadd -r tmux
%changelog
* Sun Mar 28 2010 Sven Lankes <sven@lank.es> 1.2-1
- New upstream release
- rediff writehard patch
* Mon Nov 09 2009 Sven Lankes <sven@lank.es> 1.1-1
- New upstream release