Add support for parsing slot-number.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17150 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -579,18 +579,39 @@ p11_init(hx509_context context,
|
|||||||
{
|
{
|
||||||
CK_C_GetFunctionList getFuncs;
|
CK_C_GetFunctionList getFuncs;
|
||||||
struct p11_module *p;
|
struct p11_module *p;
|
||||||
|
char *list, *str;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
*data = NULL;
|
*data = NULL;
|
||||||
|
|
||||||
p = calloc(1, sizeof(*p));
|
list = strdup(residue);
|
||||||
if (p == NULL)
|
if (list == NULL)
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
|
|
||||||
|
p = calloc(1, sizeof(*p));
|
||||||
|
if (p == NULL) {
|
||||||
|
free(list);
|
||||||
|
return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
p->selected_slot = 0;
|
p->selected_slot = 0;
|
||||||
p->refcount = 1;
|
p->refcount = 1;
|
||||||
|
|
||||||
p->dl_handle = dlopen(residue, RTLD_NOW);
|
str = strchr(list, ',');
|
||||||
|
if (str)
|
||||||
|
*str++ = '\0';
|
||||||
|
while (str) {
|
||||||
|
char *strnext;
|
||||||
|
strnext = strchr(str, ',');
|
||||||
|
if (strnext)
|
||||||
|
*strnext++ = '\0';
|
||||||
|
if (strncasecmp(str, "slot=", 5) == 0)
|
||||||
|
p->selected_slot = atoi(str + 5);
|
||||||
|
str = strnext;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->dl_handle = dlopen(list, RTLD_NOW);
|
||||||
|
free(list);
|
||||||
if (p->dl_handle == NULL) {
|
if (p->dl_handle == NULL) {
|
||||||
ret = EINVAL; /* XXX */
|
ret = EINVAL; /* XXX */
|
||||||
goto out;
|
goto out;
|
||||||
@@ -620,7 +641,7 @@ p11_init(hx509_context context,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p->selected_slot > p->num_slots) {
|
if (p->selected_slot >= p->num_slots) {
|
||||||
ret = EINVAL;
|
ret = EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user