Line
Link Here
|
|
-- |
|
|
1 |
auth2-chall.c | 11 +++++++-- |
|
auth2-chall.c | 11 +++++++-- |
2 |
1 file changed, 7 insertions(+), 2 deletions(-) |
1 |
1 file changed, 7 insertions(+), 2 deletions(-) |
3 |
-- a/auth2-chall.c |
2 |
++ b/auth2-chall.c |
Lines 83-88
struct KbdintAuthctxt
Link Here
|
83 |
void *ctxt; |
83 |
void *ctxt; |
84 |
KbdintDevice *device; |
84 |
KbdintDevice *device; |
85 |
u_int nreq; |
85 |
u_int nreq; |
|
|
86 |
u_int devices_done; |
86 |
}; |
87 |
}; |
87 |
|
88 |
|
88 |
#ifdef USE_PAM |
89 |
#ifdef USE_PAM |
Lines 169-179
kbdint_next_device(Authctxt *authctxt, KbdintAuthctxt *kbdintctxt)
Link Here
|
169 |
if (len == 0) |
170 |
if (len == 0) |
170 |
break; |
171 |
break; |
171 |
for (i = 0; devices[i]; i++) { |
172 |
for (i = 0; devices[i]; i++) { |
172 |
if (!auth2_method_allowed(authctxt, |
173 |
if ((kbdintctxt->devices_done & (1 << i)) != 0 || |
|
|
174 |
!auth2_method_allowed(authctxt, |
173 |
"keyboard-interactive", devices[i]->name)) |
175 |
"keyboard-interactive", devices[i]->name)) |
174 |
continue; |
176 |
continue; |
175 |
if (strncmp(kbdintctxt->devices, devices[i]->name, len) == 0) |
177 |
if (strncmp(kbdintctxt->devices, devices[i]->name, |
|
|
178 |
len) == 0) { |
176 |
kbdintctxt->device = devices[i]; |
179 |
kbdintctxt->device = devices[i]; |
|
|
180 |
kbdintctxt->devices_done |= 1 << i; |
181 |
} |
177 |
} |
182 |
} |
178 |
t = kbdintctxt->devices; |
183 |
t = kbdintctxt->devices; |
179 |
kbdintctxt->devices = t[len] ? xstrdup(t+len+1) : NULL; |
184 |
kbdintctxt->devices = t[len] ? xstrdup(t+len+1) : NULL; |