There might be a case when input file is located
in read-only directory and cpp fails when it tries to
create output file there, so use /tmp folder for that
as usually it should be writeable for any user.

Signed-off-by: Vadim Kochan <[email protected]>
---
 cpp.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/cpp.c b/cpp.c
index 8448252..6734eac 100644
--- a/cpp.c
+++ b/cpp.c
@@ -6,22 +6,19 @@
 
 int cpp_exec(char *in_file, char *out_file, size_t out_len)
 {
-       char cmd[256], *dir, *base;
-       char *a = xstrdup(in_file);
-       char *b = xstrdup(in_file);
+       char *tmp = xstrdup(in_file);
+       char cmd[256], *base;
        int ret = 0;
 
-       dir = dirname(a);
-       base = basename(b);
+       base = basename(tmp);
 
-       slprintf(out_file, out_len, "%s/.tmp-%u-%s", dir, rand(), base);
+       slprintf(out_file, out_len, "/tmp/.tmp-%u-%s", rand(), base);
        slprintf(cmd, sizeof(cmd), "cpp -I" ETCDIRE_STRING " %s > %s",
                 in_file, out_file);
 
        if (system(cmd) != 0)
                ret = -1;
 
-       xfree(a);
-       xfree(b);
+       xfree(tmp);
        return ret;
 }
-- 
2.6.2

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to