goto cleanup;
}
- if( lseek(in, (off_t)(-sizeof(uint32_t)), SEEK_END) == -1 )
+ if( lseek(in, -sizeof(uint32_t), SEEK_END) == -1 )
{
error("Can not seek to eof", 1);
goto cleanup;
{
uint32_t look_key = sfh_hash(key, strlen(key));
int copy_len = -1;
+ lmo_entry_t *entry;
- lmo_entry_t *entry = ar->index;
+ if( !ar )
+ return copy_len;
+
+ entry = ar->index;
while( entry != NULL )
{
if( entry->key_id == look_key )
{
- copy_len = (len > entry->length) ? entry->length : len;
+ copy_len = ((len - 1) > entry->length) ? entry->length : (len - 1);
memcpy(dest, &ar->mmap[entry->offset], copy_len);
+ dest[copy_len] = '\0';
break;
}