struct timespec atime_ts;
struct timespec ctime_ts;
char *name;
- char short_name[13*3]; /* the *3 is to cope with multi-byte */
+ char *short_name;
};
#define CLI_FULL_CONNECTION_DONT_SPNEGO 0x0001
return pdata_end - base;
}
p += 2;
- clistr_pull(base_ptr, finfo->short_name, p,
- sizeof(finfo->short_name),
- slen, STR_UNICODE);
+ ret = clistr_pull_talloc(ctx,
+ base_ptr,
+ recv_flags2,
+ &finfo->short_name,
+ p,
+ slen,
+ STR_UNICODE);
+ if (ret == (size_t)-1) {
+ return pdata_end - base;
+ }
p += 24; /* short name? */
if (p + namelen < p || p + namelen > pdata_end) {
return pdata_end - base;
}
if (finfo->name) {
- strlcpy(finfo->short_name,
- finfo->name,
- sizeof(finfo->short_name));
+ finfo->short_name = talloc_strdup(ctx, finfo->name);
+ if (finfo->short_name == NULL) {
+ return false;
+ }
}
return true;
}
return NT_STATUS_OK;
}
- fstrcpy(state->short_name, f->short_name);
+
+ fstrcpy(state->short_name, f->short_name ? f->short_name : "");
strlower_m(state->short_name);
*state->pp_long_name = SMB_STRDUP(f->name);
if (!*state->pp_long_name) {
#endif
if (strchr(force_shortname_chars, i)) {
- if (!finfo->short_name[0]) {
+ if (!finfo->short_name) {
/* Shortname not created when it should be. */
d_printf("(%s) ERROR: Shortname was not created for file %s containing %d\n",
__location__, finfo->name, i);
s->val = true;
}
- } else if (finfo->short_name[0]){
+ } else if (finfo->short_name){
/* Shortname created when it should not be. */
d_printf("(%s) ERROR: Shortname %s was created for file %s\n",
__location__, finfo->short_name, finfo->name);