From af916644164b032e83aabb3836fd4d823f0e30d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Axel=20D=C3=B6rfler?= <axeld@pinc-software.de>
Date: Fri, 1 Oct 2004 17:36:47 +0000
Subject: [PATCH] Now makes sure that the index get_tty_index() returns is in a
 valid range. Added some more conditional debug output, turned off debug
 output.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9154 a95241bf-73f2-0310-859d-f6bbb57e9c96
---
 src/add-ons/kernel/drivers/tty/master.cpp | 7 +++++--
 src/add-ons/kernel/drivers/tty/slave.cpp  | 6 +++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/add-ons/kernel/drivers/tty/master.cpp b/src/add-ons/kernel/drivers/tty/master.cpp
index beb23493e2..8ee58c3ef7 100644
--- a/src/add-ons/kernel/drivers/tty/master.cpp
+++ b/src/add-ons/kernel/drivers/tty/master.cpp
@@ -9,7 +9,7 @@
 #include <stdlib.h>
 
 
-#define MASTER_TRACE
+//#define MASTER_TRACE
 #ifdef MASTER_TRACE
 #	define TRACE(x) dprintf x
 #else
@@ -42,7 +42,10 @@ static status_t
 master_open(const char *name, uint32 flags, void **_cookie)
 {
 	int32 index = get_tty_index(name);
-	dprintf("TTY index = %ld (name = %s)\n", index, name);
+	if (index >= (int32)kNumTTYs)
+		return B_ERROR;
+
+	TRACE(("master_open: TTY index = %ld (name = %s)\n", index, name));
 
 	if (atomic_or(&gMasterTTYs[index].open_count, 1) != 0) {
 		// we're already open!
diff --git a/src/add-ons/kernel/drivers/tty/slave.cpp b/src/add-ons/kernel/drivers/tty/slave.cpp
index 1c5c2b8be3..01360f8654 100644
--- a/src/add-ons/kernel/drivers/tty/slave.cpp
+++ b/src/add-ons/kernel/drivers/tty/slave.cpp
@@ -9,7 +9,7 @@
 #include <stdlib.h>
 
 
-#define SLAVE_TRACE
+//#define SLAVE_TRACE
 #ifdef SLAVE_TRACE
 #	define TRACE(x) dprintf x
 #else
@@ -31,6 +31,10 @@ static status_t
 slave_open(const char *name, uint32 flags, void **_cookie)
 {
 	int32 index = get_tty_index(name);
+	if (index >= (int32)kNumTTYs)
+		return B_ERROR;
+
+	TRACE(("slave_open: TTY index = %ld (name = %s)\n", index, name));
 
 	// we may only be used if our master has already been opened
 	if (gMasterTTYs[index].open_count == 0)