summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/synctexdir/synctex_main.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2014-01-14 10:02:49 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2014-01-14 10:02:49 +0000
commita1bebe4817cfc2ea7fd563563dd19d8701e09407 (patch)
tree4e54a1bc806931b137756d364a45cb18e1b0ae16 /Build/source/texk/web2c/synctexdir/synctex_main.c
parentc9a1db95b879a593427b6943c876eb682758d127 (diff)
web2c/synctex: Bug fix (segfault) from Sebastian Ramacher <sramacher@debian.org>
git-svn-id: svn://tug.org/texlive/trunk@32672 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/synctexdir/synctex_main.c')
-rw-r--r--Build/source/texk/web2c/synctexdir/synctex_main.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/Build/source/texk/web2c/synctexdir/synctex_main.c b/Build/source/texk/web2c/synctexdir/synctex_main.c
index 5274cda455c..f0fa3b96dab 100644
--- a/Build/source/texk/web2c/synctexdir/synctex_main.c
+++ b/Build/source/texk/web2c/synctexdir/synctex_main.c
@@ -304,11 +304,11 @@ scan_output:
if(++arg_index<argc) {
goto option_command;
} else {
- synctex_view_proceed(&Ps);
+ return synctex_view_proceed(&Ps);
}
} else {
Ps.directory = getenv("SYNCTEX_BUILD_DIRECTORY");
- synctex_view_proceed(&Ps);
+ return synctex_view_proceed(&Ps);
}
}
option_command:
@@ -320,7 +320,7 @@ option_command:
if(++arg_index<argc) {
goto option_hint;
} else {
- synctex_view_proceed(&Ps);
+ return synctex_view_proceed(&Ps);
}
} else {
/* retrieve the environment variable */
@@ -329,7 +329,7 @@ option_command:
}
} else {
Ps.viewer = getenv("SYNCTEX_VIEWER");
- synctex_view_proceed(&Ps);
+ return synctex_view_proceed(&Ps);
}
}
option_hint:
@@ -347,7 +347,7 @@ option_hint:
*Ps.after = '\0';
if(Ps.offset<strlen(Ps.middle)) {
++Ps.after;
- synctex_view_proceed(&Ps);
+ return synctex_view_proceed(&Ps);
}
}
}
@@ -460,11 +460,12 @@ int synctex_view_proceed(synctex_view_params_t * Ps) {
break;
}
/* copy the rest of viewer into the buffer */
- if(buffer_cur != memcpy(buffer_cur,viewer,strlen(viewer))) {
+ if(buffer_cur != strncpy(buffer_cur,viewer,size + 1)) {
synctex_help_view("Memory copy problem");
free(buffer);
return -1;
}
+ buffer_cur[size] = '\0';
printf("SyncTeX: Executing\n%s\n",buffer);
status = system(buffer);
free(buffer);