diff --git a/src/sso/sso.c b/src/sso/sso.c
index e6879f7a9da6741c36646f6ac1516b54ae3910a7..8eefd8bea1a0ed71a21bba0fa8b6ac0a8451182d 100644
--- a/src/sso/sso.c
+++ b/src/sso/sso.c
@@ -218,7 +218,8 @@ static int sso_ticket_deserialize(sso_ticket_t *t, const char *s, int sz) {
     *session_id = NULL;
   char **groups = NULL;
   time_t expires = 0;
-  int err, field_size;
+  int err = SSO_OK;
+  int field_size;
   int i = 0, last = 0, field = 0;
   char *token;
 
@@ -261,7 +262,7 @@ static int sso_ticket_deserialize(sso_ticket_t *t, const char *s, int sz) {
         free(token);
         break;
       case 7:
-        groups = (char **)group_list_parse(token);
+        groups = group_list_parse(token);
         free(token);
         break;
       default:
@@ -285,8 +286,6 @@ static int sso_ticket_deserialize(sso_ticket_t *t, const char *s, int sz) {
   }
 
   *t = sso_ticket_new(user, service, domain, nonce, session_id, (const char **)groups, expires);
-  free(version);
-  return SSO_OK;
 
  fail:
   if (version != NULL)