Signed-off-by: Andreas Piesk <[email protected]>
---
 usr/sbin/pkcsconf/pkcsconf.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/usr/sbin/pkcsconf/pkcsconf.c b/usr/sbin/pkcsconf/pkcsconf.c
index f81fe85..66c987a 100755
--- a/usr/sbin/pkcsconf/pkcsconf.c
+++ b/usr/sbin/pkcsconf/pkcsconf.c
@@ -1135,12 +1135,20 @@ init_token(int slot_id, CK_CHAR_PTR pin){
      * unique token label; however the PKCS11 spec does not.  */
     printf(PKCSINIT_MSG(GETLABEL, "Enter a unique token label: "));
     fflush(stdout);
-    fgets((char *)enteredlabel, sizeof(enteredlabel), stdin);
+
+    memset(enteredlabel, 0, sizeof(enteredlabel));
+    if(fgets((char *)enteredlabel, sizeof(enteredlabel), stdin) == NULL) {
+        /* cosmetic: print newline because no newline has been entered */
+        printf("\n");
+    } else {
+        /* chop trailing newline */
+        enteredlabel[strcspn((const char*)enteredlabel,"\n")] = '\0';
+    }
 
     /* First clear the label array. Per PKCS#11 spec, We must PAD this field to
      * 32 bytes, and it should NOT be null-terminated */
-    memset(label, ' ', 32);
-    strncpy((char *)label, (char *)enteredlabel, strlen((char *)enteredlabel) 
- 1);   // Strip the \n
+    memset(label, ' ', sizeof(label));
+    strncpy((char *)label, (char *)enteredlabel, strlen((char *)enteredlabel));
 
     rc = FunctionPtr->C_InitToken(slot_id, pin,
             pinlen, label);
-- 
1.7.1


------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Opencryptoki-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech

Reply via email to