diff options
| author | jakob <jakob@memeware.net> | 2017-06-03 19:00:07 -0400 |
|---|---|---|
| committer | jakob <jakob@memeware.net> | 2017-06-03 19:00:07 -0400 |
| commit | 17b658ceadd08d693f23448c276958e2eea5970e (patch) | |
| tree | 8d0f62709646de856373a0ffa4fc2513f717f770 /src/table.c | |
| parent | 6adad1bfad91274aad030cf6167c1f19fb602d62 (diff) | |
Fully working repacker, no bugs related to the encoded output being larger than the buffer, and filenames are properly encoded.
Diffstat (limited to 'src/table.c')
| -rw-r--r-- | src/table.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/table.c b/src/table.c index 12daff5..421a04d 100644 --- a/src/table.c +++ b/src/table.c @@ -246,6 +246,10 @@ struct table_entry *read_table(struct stream *s) { uint32_t magic; uint64_t size; + FILE *fp = fopen("/tmp/dump.bin", "wb+"); + stream_dump(fp, s, s->len); + fclose(fp); + do { stream_read(&magic, s, sizeof(uint32_t)); stream_read(&size, s, sizeof(uint64_t)); @@ -286,12 +290,13 @@ struct table_entry *add_file(struct table_entry *root, char *path) { return NULL; size_t name_len = strlen(path); - new->filename = malloc(name_len); + new->filename = malloc(name_len + 1); if (new->filename == NULL) return NULL; - strncpy(new->filename, path, name_len); - new->key = 0xffffffff; + strncpy(new->filename, path, name_len + 1); + /* TODO: Replace this with something more deterministic. */ + new->key = rand(); new->ctime = 0; new->segment_count = 1; entry_append(root, new); |