Subject: OpenSSH enum patch
To: , , <itojun@netbsd.org>
From: Ben Harris <bjh21@netbsd.org>
List: tech-crypto
Date: 01/06/2002 14:07:41
OpenSSH defines enums for syslog facilities and levels, but assumes (e.g.
in log_facility_number and log_level_number), that it's OK to cast -1 to a
value of this type, even though -1 isn't a member of either enum.  This
may stop working on NetBSD/arm sometime soon.

A simple fix to this is below.  It would be better if the extra value had
a more descriptive name, and if it were used by name everywhere rather
than hardcoding -1, but this fix is enough to get the code to compile
correctly with -fshort-enums.

Index: crypto/dist/ssh/log.h
===================================================================
RCS file: /cvsroot/basesrc/crypto/dist/ssh/log.h,v
retrieving revision 1.3
diff -u -r1.3 log.h
--- crypto/dist/ssh/log.h	2001/09/27 03:24:03	1.3
+++ crypto/dist/ssh/log.h	2002/01/03 22:34:26
@@ -28,7 +28,8 @@
 	SYSLOG_FACILITY_LOCAL4,
 	SYSLOG_FACILITY_LOCAL5,
 	SYSLOG_FACILITY_LOCAL6,
-	SYSLOG_FACILITY_LOCAL7
+	SYSLOG_FACILITY_LOCAL7,
+	SYSLOG_FACILITY_MINUSONE = -1
 }       SyslogFacility;

 typedef enum {
@@ -39,7 +40,8 @@
 	SYSLOG_LEVEL_VERBOSE,
 	SYSLOG_LEVEL_DEBUG1,
 	SYSLOG_LEVEL_DEBUG2,
-	SYSLOG_LEVEL_DEBUG3
+	SYSLOG_LEVEL_DEBUG3,
+	SYSLOG_LEVEL_MINUSONE = -1
 }       LogLevel;

 void     log_init(char *, LogLevel, SyslogFacility, int);

-- 
Ben Harris                                                   <bjh21@netbsd.org>
Portmaster, NetBSD/arm26               <URL:http://www.netbsd.org/Ports/arm26/>