Hi All,

This patch fixes bug - https://fedorahosted.org/freeipa/ticket/3406

Thanks,
Abhijeet Kasurde
From d1ede043e6d5d0342433e4eb769b0d48b0e4914c Mon Sep 17 00:00:00 2001
From: Abhijeet Kasurde <akasu...@redhat.com>
Date: Mon, 10 Aug 2015 16:56:29 +0530
Subject: [PATCH] Added try/except block for ipautil

Added error handling for user input in order to handle various errors
like ValueError and EOFError in ipautil.

https://fedorahosted.org/freeipa/ticket/3406
---
 ipapython/ipautil.py | 48 ++++++++++++++++++++++++++++--------------------
 1 file changed, 28 insertions(+), 20 deletions(-)

diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index 88e89706b8e2aa6dea80809510d88bceaa836e85..bc6530bdc940239ce9e4f3af6021b078460c5120 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -746,30 +746,38 @@ def ipa_generate_password(characters=None,pwd_len=None):
 def user_input(prompt, default = None, allow_empty = True):
     if default == None:
         while True:
-            ret = raw_input("%s: " % prompt)
-            if allow_empty or ret.strip():
-                return ret
+            try:
+                ret = raw_input("%s: " % prompt)
+                if allow_empty or ret.strip():
+                    return ret
+            except EOFError:
+                pass
 
     if isinstance(default, basestring):
         while True:
-            ret = raw_input("%s [%s]: " % (prompt, default))
-            if not ret and (allow_empty or default):
-                return default
-            elif ret.strip():
-                return ret
+            try:
+                ret = raw_input("%s [%s]: " % (prompt, default))
+                if not ret and (allow_empty or default):
+                    return default
+                elif ret.strip():
+                    return ret
+            except EOFError:
+                pass
+
     if isinstance(default, bool):
-        if default:
-            choice = "yes"
-        else:
-            choice = "no"
+        choice = "yes" if default else "no"
         while True:
-            ret = raw_input("%s [%s]: " % (prompt, choice))
-            if not ret:
-                return default
-            elif ret.lower()[0] == "y":
-                return True
-            elif ret.lower()[0] == "n":
-                return False
+            try:
+                ret = raw_input("%s [%s]: " % (prompt, choice))
+                if not ret:
+                    return default
+                elif ret.lower()[0] == "y":
+                    return True
+                elif ret.lower()[0] == "n":
+                    return False
+            except EOFError:
+                pass
+
     if isinstance(default, int):
         while True:
             try:
@@ -777,7 +785,7 @@ def user_input(prompt, default = None, allow_empty = True):
                 if not ret:
                     return default
                 ret = int(ret)
-            except ValueError:
+            except EOFError, ValueError:
                 pass
             else:
                 return ret
-- 
2.4.3

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to