summaryrefslogtreecommitdiff
path: root/src/driver
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver')
-rw-r--r--src/driver/mdso_driver_ctx.c3
-rw-r--r--src/driver/mdso_unit_ctx.c7
2 files changed, 8 insertions, 2 deletions
diff --git a/src/driver/mdso_driver_ctx.c b/src/driver/mdso_driver_ctx.c
index e7e4a0f..46525f2 100644
--- a/src/driver/mdso_driver_ctx.c
+++ b/src/driver/mdso_driver_ctx.c
@@ -378,6 +378,9 @@ static void mdso_free_driver_ctx_impl(struct mdso_driver_ctx_alloc * ictx)
close(ictx->ctx.fddst);
if (ictx->ctx.fdtmpin >= 0)
+ unlink(ictx->ctx.tmpname);
+
+ if (ictx->ctx.fdtmpin >= 0)
close(ictx->ctx.fdtmpin);
if (ictx->ctx.asmbase)
diff --git a/src/driver/mdso_unit_ctx.c b/src/driver/mdso_unit_ctx.c
index d14beed..1c6212c 100644
--- a/src/driver/mdso_unit_ctx.c
+++ b/src/driver/mdso_unit_ctx.c
@@ -42,7 +42,7 @@ static int mdso_stdin_to_tmp(const struct mdso_driver_ctx * dctx)
ssize_t cnt;
char * ch;
char buf[4096];
- char template[] = "/tmp/mdso_stdin_to_tmp_XXXXXX";
+ char tmpname[] = "/tmp/mdso_stdin_to_tmp_XXXXXX";
addr = (uintptr_t)dctx - offsetof(struct mdso_driver_ctx_impl,ctx);
ictx = (struct mdso_driver_ctx_impl *)addr;
@@ -50,14 +50,17 @@ static int mdso_stdin_to_tmp(const struct mdso_driver_ctx * dctx)
if (ictx->fdtmpin >= 0)
return dup(ictx->fdtmpin);
- if ((fdtmp = mkstemp(template)) < 0)
+ if ((fdtmp = mkstemp(tmpname)) < 0)
return -1;
if ((ictx->fdtmpin = dup(fdtmp)) < 0) {
close(fdtmp);
+ unlink(tmpname);
return -1;
}
+ strcpy(ictx->tmpname,tmpname);
+
for (;;) {
ret = read(0,buf,sizeof(buf)-1);