=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/roff.c,v retrieving revision 1.120 retrieving revision 1.121 diff -c -r1.120 -r1.121 *** src/usr.bin/mandoc/roff.c 2015/01/07 12:19:17 1.120 --- src/usr.bin/mandoc/roff.c 2015/01/14 22:57:57 1.121 *************** *** 1,4 **** ! /* $OpenBSD: roff.c,v 1.120 2015/01/07 12:19:17 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: roff.c,v 1.121 2015/01/14 22:57:57 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze *************** *** 2101,2107 **** static enum rofferr roff_so(ROFF_ARGS) { ! char *name; name = buf->buf + pos; mandoc_vmsg(MANDOCERR_SO, r->parse, ln, ppos, "so %s", name); --- 2101,2107 ---- static enum rofferr roff_so(ROFF_ARGS) { ! char *name, *cp; name = buf->buf + pos; mandoc_vmsg(MANDOCERR_SO, r->parse, ln, ppos, "so %s", name); *************** *** 2116,2122 **** if (*name == '/' || strstr(name, "../") || strstr(name, "/..")) { mandoc_vmsg(MANDOCERR_SO_PATH, r->parse, ln, ppos, ".so %s", name); ! return(ROFF_ERR); } *offs = pos; --- 2116,2127 ---- if (*name == '/' || strstr(name, "../") || strstr(name, "/..")) { mandoc_vmsg(MANDOCERR_SO_PATH, r->parse, ln, ppos, ".so %s", name); ! buf->sz = mandoc_asprintf(&cp, ! ".sp\nSee the file %s.\n.sp", name) + 1; ! free(buf->buf); ! buf->buf = cp; ! *offs = 0; ! return(ROFF_REPARSE); } *offs = pos;