size_t ret = len1 + len2;
if (len1+len2 >= bufsize) {
+ if (bufsize < (len1+1)) {
+ return ret;
+ }
len2 = bufsize - (len1+1);
}
if (len2 > 0) {
for(length = 0;length<4087;length++) {
if ((temp_val[length] == '\n')
|| (temp_val[length] == '\0')) {
+ temp_val[length] = '\0';
break;
}
}
for(length = 0;length<MOUNT_PASSWD_SIZE+1;length++) {
if ((temp_val[length] == '\n')
|| (temp_val[length] == '\0')) {
+ temp_val[length] = '\0';
break;
}
}
for(length = 0;length<DOMAIN_SIZE+1;length++) {
if ((temp_val[length] == '\n')
|| (temp_val[length] == '\0')) {
+ temp_val[length] = '\0';
break;
}
}
break;
} else /* read valid character */ {
if((c == 0) || (c == '\n')) {
+ mountpassword[i] = '\0';
break;
} else
mountpassword[i] = c;
}
} else if (strncmp(data, "sec", 3) == 0) {
if (value) {
- if (!strcmp(value, "none"))
+ if (!strncmp(value, "none", 4) ||
+ !strncmp(value, "krb5", 4))
got_password = 1;
}
} else if (strncmp(data, "ip", 2) == 0) {
printf("CIFS: UNC name too long\n");
return 1;
}
- } else if ((strncmp(data, "domain", 3) == 0)
- || (strncmp(data, "workgroup", 5) == 0)) {
+ } else if ((strncmp(data, "dom" /* domain */, 3) == 0)
+ || (strncmp(data, "workg", 5) == 0)) {
+ /* note this allows for synonyms of "domain"
+ such as "DOM" and "dom" and "workgroup"
+ and "WORKGRP" etc. */
if (!value || !*value) {
printf("CIFS: invalid domain name\n");
return 1; /* needs_arg; */
}
- if (strnlen(value, 65) < 65) {
+ if (strnlen(value, DOMAIN_SIZE+1) < DOMAIN_SIZE+1) {
got_domain = 1;
} else {
printf("domain name too long\n");
if (getenv("PASSWD")) {
if(mountpassword == NULL)
- mountpassword = (char *)calloc(65,1);
+ mountpassword = (char *)calloc(MOUNT_PASSWD_SIZE+1,1);
if(mountpassword) {
- strlcpy(mountpassword,getenv("PASSWD"),MOUNT_PASSWD_SIZE);
+ strlcpy(mountpassword,getenv("PASSWD"),MOUNT_PASSWD_SIZE+1);
got_password = 1;
}
} else if (getenv("PASSWD_FD")) {