diff --git a/src/sacctmgr/sacctmgr.c b/src/sacctmgr/sacctmgr.c
index 3f238f29d894e49b8fc5b38fe8d6d4306a9fa5a7..b49d3d187524500ee6f36bff37a89f8f5781567f 100644
--- a/src/sacctmgr/sacctmgr.c
+++ b/src/sacctmgr/sacctmgr.c
@@ -254,6 +254,7 @@ static char *_getline(const char *prompt)
 	char buf[4096];
 	char *line;
 	int len;
+
 	printf("%s", prompt);
 
 	/* Set "line" here to avoid a warning, discard later */
@@ -261,11 +262,13 @@ static char *_getline(const char *prompt)
 	if (line == NULL)
 		return NULL;
 	len = strlen(buf);
-	if ((len > 0) && (buf[len-1] == '\n'))
+	if ((len == 0) || (len >= 4096))
+		return NULL;
+	if (buf[len-1] == '\n')
 		buf[len-1] = '\0';
 	else
 		len++;
-	line = malloc (len * sizeof(char));
+	line = malloc(len * sizeof(char));
 	if (!line)
 		return NULL;
 	return strncpy(line, buf, len);
diff --git a/src/scontrol/scontrol.c b/src/scontrol/scontrol.c
index c8596495c4f6844668160fc96a39df5ba4e051f5..260b6b7e595aa7a7c70b3f268b2ef1b4f75e0f15 100644
--- a/src/scontrol/scontrol.c
+++ b/src/scontrol/scontrol.c
@@ -251,14 +251,16 @@ static char *_getline(const char *prompt)
 
 	/* Set "line" here to avoid a warning, discard later */
 	line = fgets(buf, 4096, stdin);
+	if (line == NULL)
+		return NULL;
 	len = strlen(buf);
-	if (len == 0)
+	if ((len == 0) || (len >= 4096))
 		return NULL;
 	if (buf[len-1] == '\n')
 		buf[len-1] = '\0';
 	else
 		len++;
-	line = malloc (len * sizeof(char));
+	line = malloc(len * sizeof(char));
 	if (!line)
 		return NULL;
 	return strncpy(line, buf, len);
diff --git a/src/sreport/sreport.c b/src/sreport/sreport.c
index f93e53754d852f070ebb0050694c3f5c0c5ce4f7..2c9607a2a7a670330e02b2f526295b101c925832 100644
--- a/src/sreport/sreport.c
+++ b/src/sreport/sreport.c
@@ -213,6 +213,7 @@ static char *_getline(const char *prompt)
 	char buf[4096];
 	char *line;
 	int len;
+
 	printf("%s", prompt);
 
 	/* Set "line" here to avoid a warning, discard later */
@@ -220,11 +221,13 @@ static char *_getline(const char *prompt)
 	if (line == NULL)
 		return NULL;
 	len = strlen(buf);
-	if ((len > 0) && (buf[len-1] == '\n'))
+	if ((len == 0) || (len >= 4096))
+		return NULL;
+	if (buf[len-1] == '\n')
 		buf[len-1] = '\0';
 	else
 		len++;
-	line = malloc (len * sizeof(char));
+	line = malloc(len * sizeof(char));
 	if (!line)
 		return NULL;
 	return strncpy(line, buf, len);