summaryrefslogtreecommitdiff
path: root/src/table.c
diff options
context:
space:
mode:
authorjakob <jakob@memeware.net>2017-06-03 19:00:07 -0400
committerjakob <jakob@memeware.net>2017-06-03 19:00:07 -0400
commit17b658ceadd08d693f23448c276958e2eea5970e (patch)
tree8d0f62709646de856373a0ffa4fc2513f717f770 /src/table.c
parent6adad1bfad91274aad030cf6167c1f19fb602d62 (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.c11
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);