diff --git a/kuser/klist.c b/kuser/klist.c index 04aae6b7f..2ec7bbf40 100644 --- a/kuser/klist.c +++ b/kuser/klist.c @@ -483,7 +483,7 @@ display_tokens(int do_verbose) parms.out = (void *)t; parms.out_size = sizeof(t); - for (i = 0; k_pioctl(NULL, VIOCGETTOK, &parms, 0) == 0; i++) { + for (i = 0;; i++) { int32_t size_secret_tok, size_public_tok; unsigned char *cell; struct ClearToken ct; @@ -491,6 +491,11 @@ display_tokens(int do_verbose) struct timeval tv; char buf1[20], buf2[20]; + if(k_pioctl(NULL, VIOCGETTOK, &parms, 0) < 0) { + if(errno == EDOM) + break; + continue; + } memcpy(&size_secret_tok, r, sizeof(size_secret_tok)); /* dont bother about the secret token */ r += size_secret_tok + sizeof(size_secret_tok);