diff --git a/lib/ipmi_user.c b/lib/ipmi_user.c
index d4d31ba..bcd6b71 100644
--- a/lib/ipmi_user.c
+++ b/lib/ipmi_user.c
@@ -57,7 +57,9 @@ extern int csv_output;
 #define IPMI_PASSWORD_ENABLE_USER   0x01
 #define IPMI_PASSWORD_SET_PASSWORD  0x02
 #define IPMI_PASSWORD_TEST_PASSWORD 0x03
-
+/* IPMI spec. - UID 0 reserved, 63 maximum UID that can be used */
+#define IPMI_UID_MIN 1
+#define IPMI_UID_MAX 63
 
 /*
  * ipmi_get_user_access
@@ -256,7 +258,7 @@ ipmi_print_user_list(
 
 		++current_user_id;
 	} while((current_user_id <= user_access.maximum_ids) &&
-			(current_user_id <= 63)); /* Absolute maximum allowed by spec */
+			(current_user_id <= IPMI_UID_MAX)); /* Absolute maximum allowed by spec */
 
 
 	return 0;
@@ -596,7 +598,8 @@ ipmi_user_main(struct ipmi_intf * intf, int argc, char ** argv)
 			char * password = NULL;
 			int password_length = atoi(argv[2]);
 			uint8_t user_id = 0;
-			if (str2uchar(argv[1], &user_id) != 0 || user_id == 0)
+			if (str2uchar(argv[1], &user_id) != 0 || user_id < IPMI_UID_MIN
+					|| user_id > IPMI_UID_MAX)
 			{
 				lprintf(LOG_ERR, "Invalid user ID: %s", argv[1]);
 				return (-1);
@@ -652,7 +655,8 @@ ipmi_user_main(struct ipmi_intf * intf, int argc, char ** argv)
 		{
 			char * password = NULL;
 			uint8_t user_id = 0;
-			if (str2uchar(argv[2], &user_id) != 0 || user_id == 0)
+			if (str2uchar(argv[2], &user_id) != 0 || user_id < IPMI_UID_MIN
+					user_id > IPMI_UID_MAX)
 			{
 				lprintf(LOG_ERR, "Invalid user ID: %s", argv[2]);
 				return (-1);
@@ -727,7 +731,8 @@ ipmi_user_main(struct ipmi_intf * intf, int argc, char ** argv)
 				print_user_usage();
 				return -1;
 			}
-			if (str2uchar(argv[2], &user_id) != 0 || user_id == 0)
+			if (str2uchar(argv[2], &user_id) != 0 || user_id < IPMI_UID_MIN
+					user_id > IPMI_UID_MAX)
 			{
 				lprintf(LOG_ERR, "Invalid user ID: %s", argv[2]);
 				return (-1);
@@ -770,7 +775,8 @@ ipmi_user_main(struct ipmi_intf * intf, int argc, char ** argv)
 		}
 		priv_level = (priv_level & 0x0f);
 
-		if (str2uchar(argv[1], &user_id) != 0 || user_id == 0)
+		if (str2uchar(argv[1], &user_id) != 0 || user_id < IPMI_UID_MIN
+				|| user_id > IPMI_UID_MAX)
 		{
 			lprintf(LOG_ERR, "Invalid user ID: %s", argv[1]);
 			return (-1);
@@ -797,7 +803,8 @@ ipmi_user_main(struct ipmi_intf * intf, int argc, char ** argv)
 			return -1;
 		}
 
-		if (str2uchar(argv[1], &user_id) != 0 || user_id == 0)
+		if (str2uchar(argv[1], &user_id) != 0 || user_id < IPMI_UID_MIN
+				|| user_id > IPMI_UID_MAX)
 		{
 			lprintf(LOG_ERR, "Invalid user ID: %s", user_id);
 			return (-1);
