- if (md5sum(file, md5)) {
- fprintf(stderr, "failed to generate md5 sum\n");
+ if (md5sum(file, md5) <= 0) {
+ ULOG_ERR("failed to generate md5 sum\n");
do {
if (volume_read(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
do {
if (volume_read(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
for (i = (v->size / v->block_size) - 1; i > 0; i--) {
if (volume_read(v, sentinel, i * v->block_size, sizeof(*sentinel))) {
for (i = (v->size / v->block_size) - 1; i > 0; i--) {
if (volume_read(v, sentinel, i * v->block_size, sizeof(*sentinel))) {
- if (stat(file, &s) || md5sum(file, md5)) {
- fprintf(stderr, "stat failed on %s\n", file);
+ if (stat(file, &s) || md5sum(file, md5) != s.st_size) {
+ ULOG_ERR("stat failed on %s\n", file);
goto out;
}
volume_erase(v, block * v->block_size, pad_file_size(v, s.st_size));
goto out;
}
volume_erase(v, block * v->block_size, pad_file_size(v, s.st_size));
hdr_to_be32(&hdr);
if (volume_write(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
hdr_to_be32(&hdr);
if (volume_write(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
int out, offset = 0;
if (volume_read(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
int out, offset = 0;
if (volume_read(v, &hdr, block * v->block_size, sizeof(struct file_header))) {
ret = snapshot_write_file(v, block, "/tmp/config.tar.gz", seq, CONF);
if (ret)
ret = snapshot_write_file(v, block, "/tmp/config.tar.gz", seq, CONF);
if (ret)
ret = snapshot_write_file(v, block, "/tmp/config.tar.gz", seq, CONF);
if (ret)
ret = snapshot_write_file(v, block, "/tmp/config.tar.gz", seq, CONF);
if (ret)
next = snapshot_next_free(v, &seq);
block = config_find(v, &conf, &sentinel);
if (is_config(&conf) && conf.seq != seq) {
next = snapshot_next_free(v, &seq);
block = config_find(v, &conf, &sentinel);
if (is_config(&conf) && conf.seq != seq) {
} else if (((is_config(&conf) && is_config(&sentinel)) &&
(memcmp(conf.md5, sentinel.md5, sizeof(conf.md5)) || (conf.seq != sentinel.seq))) ||
(is_config(&conf) && !is_config(&sentinel))) {
} else if (((is_config(&conf) && is_config(&sentinel)) &&
(memcmp(conf.md5, sentinel.md5, sizeof(conf.md5)) || (conf.seq != sentinel.seq))) ||
(is_config(&conf) && !is_config(&sentinel))) {
int ret = snapshot_read_file(v, next, "/tmp/config.tar.gz", CONF);
if (ret > 0) {
if (sentinel_write(v, conf.seq))
int ret = snapshot_read_file(v, next, "/tmp/config.tar.gz", CONF);
if (ret > 0) {
if (sentinel_write(v, conf.seq))
}
} else if (!is_config(&conf) && is_config(&sentinel) && next) {
int ret = snapshot_read_file(v, block, "/tmp/config.tar.gz", CONF);
if (ret > 0)
if (volatile_write(v, sentinel.seq))
}
} else if (!is_config(&conf) && is_config(&sentinel) && next) {
int ret = snapshot_read_file(v, block, "/tmp/config.tar.gz", CONF);
if (ret > 0)
if (volatile_write(v, sentinel.seq))
setenv("SNAPSHOT", "magic", 1);
_ramoverlay("/rom", "/overlay");
setenv("SNAPSHOT", "magic", 1);
_ramoverlay("/rom", "/overlay");
foreachdir("/overlay/", handle_whiteout);
mkdir("/volatile", 0700);
_ramoverlay("/rom", "/volatile");
mount_move("/rom/volatile", "/volatile", "");
mount_move("/rom/rom", "/rom", "");
foreachdir("/overlay/", handle_whiteout);
mkdir("/volatile", 0700);
_ramoverlay("/rom", "/volatile");
mount_move("/rom/volatile", "/volatile", "");
mount_move("/rom/rom", "/rom", "");