diff -rup xen-3.0.4_1-src/tools/blktap/drivers/blktapctrl.c xen-3.0.4_1-src-new/tools/blktap/drivers/blktapctrl.c
--- xen-3.0.4_1-src/tools/blktap/drivers/blktapctrl.c 2007-01-08 10:00:46.000000000 -0500
+++ xen-3.0.4_1-src-new/tools/blktap/drivers/blktapctrl.c 2007-01-11 10:47:55.000000000 -0500
@@ -673,7 +673,10 @@ int main(int argc, char *argv[])
__init_blkif();
snprintf(buf, sizeof(buf), "BLKTAPCTRL[%d]", getpid());
openlog(buf, LOG_CONS|LOG_ODELAY, LOG_DAEMON);
- daemon(0,0);
+ if (daemon(0,0) < 0) {
+ DPRINTF("could not go into daemon mode\n");
+ return -1;
+ }
print_drivers();
init_driver_list();
Only in xen-3.0.4_1-src-new/tools/blktap/drivers: blktapctrl.c~
diff -rup xen-3.0.4_1-src/tools/blktap/drivers/block-aio.c xen-3.0.4_1-src-new/tools/blktap/drivers/block-aio.c
--- xen-3.0.4_1-src/tools/blktap/drivers/block-aio.c 2007-01-11 10:40:51.000000000 -0500
+++ xen-3.0.4_1-src-new/tools/blktap/drivers/block-aio.c 2007-01-11 10:56:53.000000000 -0500
@@ -188,13 +188,27 @@ int tdaio_open (struct td_state *s, cons
prv->fd = fd;
- pipe(prv->command_fd);
- pipe(prv->completion_fd);
+ if ((ret = pipe(prv->command_fd)) < 0) {
+ DPRINTF("Unable to create command pipe\n");
+ goto done;
+ }
+ if ((ret = pipe(prv->completion_fd)) < 0) {
+ DPRINTF("Unable to create completion pipe\n");
+ goto done;
+ }
- ret = pthread_create(&prv->aio_thread, NULL,
- tdaio_completion_thread, prv);
+ if ((ret = pthread_create(&prv->aio_thread, NULL,
+ tdaio_completion_thread, prv)) != 0) {
+ ret = -1;
+ DPRINTF("Unable to create completion thread\n");
+ goto done;
+ }
ret = 0;
- write(prv->command_fd[1], &ret, sizeof(ret));
+ if (write(prv->command_fd[1], &ret, sizeof(ret)) < 0) {
+ ret = -1;
+ DPRINTF("Cannot initialize command pipe\n");
+ goto done;
+ }
ret = get_image_info(s, fd);
@@ -371,7 +385,10 @@ repeat:
goto repeat;
}
- write(prv->command_fd[1], &nr_events, sizeof(nr_events));
+ if (write(prv->command_fd[1], &nr_events, sizeof(nr_events)) < 0) {
+ DPRINTF("cannot send events command\n");
+ return -1;
+ }
return rsp;
}
Only in xen-3.0.4_1-src-new/tools/blktap/drivers: block-aio.c~
diff -rup xen-3.0.4_1-src/tools/blktap/drivers/block-qcow.c xen-3.0.4_1-src-new/tools/blktap/drivers/block-qcow.c
--- xen-3.0.4_1-src/tools/blktap/drivers/block-qcow.c 2007-01-08 10:00:46.000000000 -0500
+++ xen-3.0.4_1-src-new/tools/blktap/drivers/block-qcow.c 2007-01-11 11:15:35.000000000 -0500
@@ -441,8 +441,11 @@ static int qtruncate(int fd, off_t lengt
return -1;
}
- } else if(sparse && (st.st_size > length))
- ftruncate(fd, length);
+ } else if(sparse && (st.st_size > length)) {
+ if (ftruncate(fd, length) < 0) {
+ return -1;
+ }
+ }
return 1;
}
@@ -669,7 +672,10 @@ found:
}
memcpy(tmp_ptr2, l2_ptr, 4096);
lseek(s->fd, l2_offset + (l2_sector << 12), SEEK_SET);
- write(s->fd, tmp_ptr2, 4096);
+ if (write(s->fd, tmp_ptr2, 4096) < 0) {
+ free(tmp_ptr2);
+ return -1;
+ }
free(tmp_ptr2);
}
return cluster_offset;
@@ -1149,20 +1155,25 @@ int tdqcow_close(struct td_state *bs)
{
struct tdqcow_state *s = (struct tdqcow_state *)bs->private;
uint32_t cksum, out;
- int fd, offset;
+ int fd, offset, ret = 0;
/*Update the hdr cksum*/
if(s->min_cluster_alloc == s->l2_size) {
cksum = gen_cksum((char *)s->l1_table, s->l1_size * sizeof(uint64_t));
- printf("Writing cksum: %d",cksum);
- fd = open(s->name, O_WRONLY | O_LARGEFILE); /*Open without O_DIRECT*/
+ if ((fd = open(s->name, O_WRONLY | O_LARGEFILE)) < 0) { /*Open without O_DIRECT*/
+ ret = -1;
+ goto cleanup;
+ }
offset = sizeof(QCowHeader) + sizeof(uint32_t);
lseek(fd, offset, SEEK_SET);
out = cpu_to_be32(cksum);
- write(fd, &out, sizeof(uint32_t));
+ if ((ret = write(fd, &out, sizeof(uint32_t))) < 0) {
+ ret = -1;
+ }
close(fd);
}
+ cleanup:
free(s->name);
free(s->l1_table);
free(s->l2_cache);
@@ -1249,7 +1260,9 @@ int qcow_create(const char *filename, ui
strncpy(backing_filename, backing_file,
sizeof(backing_filename));
} else {
- realpath(backing_file, backing_filename);
+ if (!realpath(backing_file, backing_filename)) {
+ return -1;
+ }
if (stat(backing_filename, &st) != 0) {
return -1;
}
Only in xen-3.0.4_1-src-new/tools/blktap/drivers: block-qcow.c~
diff -rup xen-3.0.4_1-src/tools/blktap/drivers/block-vmdk.c xen-3.0.4_1-src-new/tools/blktap/drivers/block-vmdk.c
--- xen-3.0.4_1-src/tools/blktap/drivers/block-vmdk.c 2007-01-08 10:00:47.000000000 -0500
+++ xen-3.0.4_1-src-new/tools/blktap/drivers/block-vmdk.c 2007-01-11 11:02:07.000000000 -0500
@@ -268,8 +268,10 @@ static uint64_t get_cluster_offset(struc
if (!allocate)
return 0;
cluster_offset = lseek(prv->fd, 0, SEEK_END);
- ftruncate(prv->fd, cluster_offset +
- (prv->cluster_sectors << 9));
+ if (ftruncate(prv->fd, cluster_offset +
+ (prv->cluster_sectors << 9)) < 0) {
+ return 0;
+ }
cluster_offset >>= 9;
/* update L2 table */
tmp = cpu_to_le32(cluster_offset);
Only in xen-3.0.4_1-src-new/tools/blktap/drivers: block-vmdk.c~