check return value
[openssl.git] / crypto / ui / ui_util.c
index 8876128e56a2fb155120e4020d6b67d01514fdd8..5d9760bb7b3ff4d02460571122a1457f525eb6cf 100644 (file)
  */
 
 #include <string.h>
-#include <openssl/ui.h>
-#ifdef OPENSSL_SYS_WINCE
-#include <stdio_extras.h>      /* BUFSIZ */
-#endif
+#include "ui_locl.h"
 
 int UI_UTIL_read_pw_string(char *buf,int length,const char *prompt,int verify)
        {
@@ -65,7 +62,7 @@ int UI_UTIL_read_pw_string(char *buf,int length,const char *prompt,int verify)
        int ret;
 
        ret=UI_UTIL_read_pw(buf,buff,(length>BUFSIZ)?BUFSIZ:length,prompt,verify);
-       memset(buff,0,BUFSIZ);
+       OPENSSL_cleanse(buff,BUFSIZ);
        return(ret);
        }
 
@@ -81,12 +78,14 @@ int UI_UTIL_read_pw(char *buf,char *buff,int size,const char *prompt,int verify)
        if (ui)
                {
                ok = UI_add_input_string(ui,prompt,0,buf,0,size-1);
-               if (ok == 0 && verify)
+               if (ok >= 0 && verify)
                        ok = UI_add_verify_string(ui,prompt,0,buff,0,size-1,
                                buf);
-               if (ok == 0)
+               if (ok >= 0)
                        ok=UI_process(ui);
                UI_free(ui);
                }
+       if (ok > 0)
+               ok = 0;
        return(ok);
        }