1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
--- lib/krb5/keytab_any.c 2001/05/14 06:14:48 1.2
+++ lib/krb5/keytab_any.c 2001/06/24 01:41:04
@@ -60,7 +60,8 @@
krb5_error_code ret;
char buf[256];
- while (strsep_copy(&name, ",", buf, sizeof(buf)) != -1) {
+ while (strsep_copy(&name, ",", buf, sizeof(buf)) != -1
+ && buf[0] != '\0') {
a = malloc(sizeof(*a));
if (a == NULL) {
ret = ENOMEM;
@@ -68,7 +69,7 @@
}
if (a0 == NULL) {
a0 = a;
- a->name = strdup(name);
+ a->name = strdup(buf);
if (a->name == NULL) {
krb5_set_error_string(context, "malloc: out of memory");
ret = ENOMEM;
@@ -139,10 +140,8 @@
ed->a = a;
ret = krb5_kt_start_seq_get(context, ed->a->kt, &ed->cursor);
if (ret) {
- free (ed);
free (c->data);
c->data = NULL;
- krb5_set_error_string (context, "malloc: out of memory");
return ENOMEM;
}
return 0;
@@ -166,14 +165,15 @@
ret2 = krb5_kt_end_seq_get (context, ed->a->kt, &ed->cursor);
if (ret2)
return ret2;
- ed->a = ed->a->next;
+ while ((ed->a = ed->a->next) != NULL) {
+ ret2 = krb5_kt_start_seq_get(context, ed->a->kt, &ed->cursor);
+ if (ret2 == 0)
+ break;
+ }
if (ed->a == NULL) {
krb5_clear_error_string (context);
return KRB5_CC_END;
}
- ret2 = krb5_kt_start_seq_get(context, ed->a->kt, &ed->cursor);
- if (ret2)
- return ret2;
} else
return ret;
} while (ret == KRB5_CC_END);
|