talloc_free(short_name);
}
- dir->offset = telldir(dir->dir) + DIR_OFFSET_BASE;
+ /* Casting is necessary to avoid signed integer overflow. */
+ dir->offset = (unsigned long)telldir(dir->dir) + (unsigned long)DIR_OFFSET_BASE;
(*ofs) = dir->offset;
dcache_add(dir, dname);
while ((de = readdir(dir->dir))) {
if (strcasecmp_m(name, de->d_name) == 0) {
- dir->offset = telldir(dir->dir) + DIR_OFFSET_BASE;
+ /* Casting is necessary to avoid signed integer overflow. */
+ dir->offset = (unsigned long)telldir(dir->dir) + (unsigned long)DIR_OFFSET_BASE;
*ofs = dir->offset;
return NT_STATUS_OK;
}
dir->end_of_search = true;
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
- *ofs = telldir(dir->dir) + DIR_OFFSET_BASE;
+ /* Casting is necessary to avoid signed integer overflow. */
+ *ofs = (unsigned long)telldir(dir->dir) + (unsigned long)DIR_OFFSET_BASE;
dir->offset = *ofs;
return NT_STATUS_OK;
}
rewinddir(dir->dir);
while ((de = readdir(dir->dir))) {
- dir->offset = telldir(dir->dir) + DIR_OFFSET_BASE;
+ /* Casting is necessary to avoid signed integer overflow. */
+ dir->offset = (unsigned long)telldir(dir->dir) + (unsigned long)DIR_OFFSET_BASE;
if (resume_key == (uint32_t)dir->offset) {
*ofs = dir->offset;
return NT_STATUS_OK;