Michael McConville <mm...@mykolab.com> writes:

> attila wrote:
>> Ping.
>> 
>> Just tested that the diff works against recentish i386 snap (22 May).
>> Patch attached.
>
> I can't comment on all of the changes, but this builds and runs fine for
> me.

Thanks for looking at it, but the upstream has moved on and there's a
newer release.  I'm working on an update to that instead, and maybe
finally get the unit tests working... I'll try to post something soon
(today or tomorrow).

Pax, -A

>
>> Index: Makefile
>> ===================================================================
>> RCS file: /cvs/ports/textproc/multimarkdown/Makefile,v
>> retrieving revision 1.2
>> diff -u -p -r1.2 Makefile
>> --- Makefile 5 Apr 2015 13:31:15 -0000       1.2
>> +++ Makefile 15 Apr 2016 20:30:02 -0000
>> @@ -1,13 +1,13 @@
>>  # $OpenBSD: Makefile,v 1.2 2015/04/05 13:31:15 sthen Exp $
>>  
>> -V =         4.7.1
>> +V =         5.2.0-1
>>  COMMENT =   marked-up plain text to formatted document converter
>>  DISTNAME =  ${GH_PROJECT}-${V}
>> -PKGNAME =   multimarkdown-${V}
>> +PKGNAME =   multimarkdown-${V:C/-/./}
>>  CATEGORIES =        textproc
>>  
>>  GH_ACCOUNT =        fletcher
>> -GH_PROJECT =        MultiMarkdown-4
>> +GH_PROJECT =        MultiMarkdown-5
>>  GH_TAGNAME =        ${V}
>>  
>>  HOMEPAGE =  http://fletcherpenney.net/multimarkdown/
>> @@ -20,15 +20,19 @@ WANTLIB += c
>>  
>>  BUILD_DEPENDS =     devel/greg
>>  
>> -USE_GMAKE = Yes
>> -ALL_TARGET =        ALL
>> -MAKE_FLAGS =        CFLAGS="${CFLAGS} -include GLibFacade.h 
>> -DHAVE_ARC4RANDOM" \
>> -            GREG=${LOCALBASE}/bin/greg
>> +MODULES =   devel/cmake
>> +
>> +CFLAGS +=   -DHAVE_SRAND_DETERMINISTIC
>> +
>> +CONFIGURE_ARGS += -DGREG=${LOCALBASE}/bin/greg
>>  
>>  # Test files aren't included in distfile.
>>  NO_TEST =   Yes
>>  
>> +pre-configure:
>> +    touch ${WRKBUILD}/README.html
>> +
>>  do-install:
>> -    ${INSTALL_PROGRAM} ${WRKSRC}/multimarkdown ${PREFIX}/bin/
>> +    ${INSTALL_PROGRAM} ${WRKBUILD}/multimarkdown ${PREFIX}/bin/
>>  
>>  .include <bsd.port.mk>
>> Index: distinfo
>> ===================================================================
>> RCS file: /cvs/ports/textproc/multimarkdown/distinfo,v
>> retrieving revision 1.1.1.1
>> diff -u -p -r1.1.1.1 distinfo
>> --- distinfo 24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ distinfo 15 Apr 2016 20:30:02 -0000
>> @@ -1,2 +1,2 @@
>> -SHA256 (MultiMarkdown-4-4.7.1.tar.gz) = 
>> gy5dzm+hv/TWfmSsLMJPCSCujZEoDlPqh5I3odQ/SGU=
>> -SIZE (MultiMarkdown-4-4.7.1.tar.gz) = 120896
>> +SHA256 (MultiMarkdown-5-5.2.0-1.tar.gz) = 
>> be3wxbEGZQob8/ZZlHtBei0/S6T2FNyN3VI8RsEsyzI=
>> +SIZE (MultiMarkdown-5-5.2.0-1.tar.gz) = 135551
>> Index: patches/patch-CMakeLists_txt
>> ===================================================================
>> RCS file: patches/patch-CMakeLists_txt
>> diff -N patches/patch-CMakeLists_txt
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-CMakeLists_txt     15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,14 @@
>> +$OpenBSD$
>> +
>> +Use installed greg
>> +--- CMakeLists.txt.orig     Mon Feb 22 20:05:02 2016
>> ++++ CMakeLists.txt  Tue Mar 22 12:45:41 2016
>> +@@ -149,7 +149,7 @@ endif ()
>> + # Need to build parser.c via greg
>> + add_custom_command (
>> +    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/parser.c
>> +-   COMMAND ${PROJECT_SOURCE_DIR}/submodules/greg/greg -o 
>> ${CMAKE_CURRENT_BINARY_DIR}/parser.c ${PROJECT_SOURCE_DIR}/src/parser.leg
>> ++   COMMAND ${GREG} -o ${CMAKE_CURRENT_BINARY_DIR}/parser.c 
>> ${PROJECT_SOURCE_DIR}/src/parser.leg
>> + )
>> + 
>> + # src_files are the primary files, and will be included in doxygen 
>> documentation
>> Index: patches/patch-Makefile
>> ===================================================================
>> RCS file: patches/patch-Makefile
>> diff -N patches/patch-Makefile
>> --- patches/patch-Makefile   24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,37 +0,0 @@
>> -$OpenBSD: patch-Makefile,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -Make it possible to pass GREG=/usr/local/bin/greg in on the
>> -command line and avoid git submodules.
>> -
>> ---- Makefile.orig   Mon Mar 23 18:21:56 2015
>> -+++ Makefile        Mon Mar 23 18:32:22 2015
>> -@@ -32,18 +32,25 @@ ifeq ($(MAKECMDGOALS),static)
>> - LDFLAGS += -static -static-libgcc
>> - endif
>> - 
>> --GREG= greg/greg
>> -+# OUR_GREG: the version of greg in a submodule
>> -+# GREG: the path to greg we want to use for parser.leg
>> -+#
>> -+# This way we can pass GREG=/usr/local/bin/greg in on
>> -+# the command line if we have greg installed already.
>> - 
>> -+OUR_GREG=greg/greg
>> -+GREG?=$(OUR_GREG)
>> -+
>> - ALL : $(PROGRAM) enumMap.txt
>> - static : $(PROGRAM) enumMap.txt
>> - 
>> - %.o : %.c parser.h
>> -    $(CC) -c $(CFLAGS) -o $@ $<
>> - 
>> --parser.c : parser.leg greg/greg parser.h
>> --   greg/greg -o parser.c parser.leg
>> -+parser.c : parser.leg $(GREG) parser.h
>> -+   $(GREG) -o parser.c parser.leg
>> - 
>> --$(GREG): greg
>> -+$(OUR_GREG): greg
>> -    $(MAKE) -C greg
>> - 
>> - $(PROGRAM) : $(OBJS)
>> Index: patches/patch-html_c
>> ===================================================================
>> RCS file: patches/patch-html_c
>> diff -N patches/patch-html_c
>> --- patches/patch-html_c     24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,59 +0,0 @@
>> -$OpenBSD: patch-html_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -Switch to using arc4random(3) everywhere, since they don't really want
>> -repeatability (as evidenced by the arguments they pass to srand(3)).
>> -
>> ---- html.c.orig     Mon Mar  9 18:52:39 2015
>> -+++ html.c  Sat Mar 21 15:44:10 2015
>> -@@ -112,8 +112,12 @@ void print_html_node(GString *out, node *n, scratch_pa
>> -                            scratch->footnote_para_counter --;
>> -                            if (scratch->footnote_para_counter == 0) {
>> -                                    if (scratch->extensions & 
>> EXT_RANDOM_FOOT) {
>> -+#ifdef HAVE_ARC4RANDOM
>> -+                                           random = 
>> arc4random_uniform(99999) + 1;
>> -+#else
>> -                                            srand(scratch->random_seed_base 
>> + scratch->footnote_to_print);
>> -                                            random = rand() % 99999 + 1;
>> -+#endif
>> -                                    } else {
>> -                                            random = 
>> scratch->footnote_to_print;
>> -                                    }
>> -@@ -574,8 +578,12 @@ void print_html_node(GString *out, node *n, scratch_pa
>> -                    temp_node = node_for_count(scratch->used_notes, lev);
>> -                    
>> -                    if (scratch->extensions & EXT_RANDOM_FOOT) {
>> -+#ifdef HAVE_ARC4RANDOM
>> -+                           random = arc4random_uniform(99999) + 1;
>> -+#else
>> -                            srand(scratch->random_seed_base + lev);
>> -                            random = rand() % 99999 + 1;
>> -+#endif
>> -                    } else {
>> -                            random = lev;
>> -                    }
>> -@@ -628,8 +636,12 @@ void print_html_node(GString *out, node *n, scratch_pa
>> -                                    fprintf(stderr, "matching cite found - 
>> %d\n",lev);
>> - #endif
>> -                                    if (scratch->extensions & 
>> EXT_RANDOM_FOOT) {
>> -+#ifdef HAVE_ARC4RANDOM
>> -+                                           random = 
>> arc4random_uniform(99999) + 1;
>> -+#else
>> -                                            srand(scratch->random_seed_base 
>> + lev);
>> -                                            random = rand() % 99999 + 1;
>> -+#endif
>> -                                    } else {
>> -                                            random = lev;
>> -                                    }
>> -@@ -901,8 +913,12 @@ void print_html_endnotes(GString *out, scratch_pad *sc
>> -            pad(out, 1, scratch);
>> -            
>> -            if (scratch->extensions & EXT_RANDOM_FOOT) {
>> -+#ifdef HAVE_ARC4RANDOM
>> -+                   random = arc4random_uniform(99999) + 1;
>> -+#else
>> -                    srand(scratch->random_seed_base + counter);
>> -                    random = rand() % 99999 + 1;
>> -+#endif
>> -            } else {
>> -                    random = counter;
>> -            }
>> Index: patches/patch-latex_c
>> ===================================================================
>> RCS file: patches/patch-latex_c
>> diff -N patches/patch-latex_c
>> --- patches/patch-latex_c    24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,29 +0,0 @@
>> -$OpenBSD: patch-latex_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -Switch from strcat(3) to a safer idiom.
>> -
>> ---- latex.c.orig    Mon Mar  9 18:52:39 2015
>> -+++ latex.c Sat Mar 21 15:44:10 2015
>> -@@ -1202,16 +1202,16 @@ void print_latex_url(GString *out, char *str, 
>> scratch_
>> - char * correct_dimension_units(char *original) {
>> -    char *result;
>> -    int i;
>> --   
>> -+   size_t result_len;
>> -+
>> -    result = strdup(original);
>> --   
>> -+   result_len = strlen(result);
>> -+
>> -    for (i = 0; result[i]; i++)
>> -            result[i] = tolower(result[i]);
>> -    
>> --   if (strstr(&result[strlen(result)-2],"px")) {
>> --           result[strlen(result)-2] = '\0';
>> --           strcat(result, "pt");
>> --   }
>> -+   if (strstr(&result[result_len-2],"px"))
>> -+           result[result_len-1] = 't';
>> -    
>> -    return result;
>> - }
>> Index: patches/patch-parse_utilities_c
>> ===================================================================
>> RCS file: patches/patch-parse_utilities_c
>> diff -N patches/patch-parse_utilities_c
>> --- patches/patch-parse_utilities_c  24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,52 +0,0 @@
>> -$OpenBSD: patch-parse_utilities_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -ifdef out pragmas that don't work under OpenBSD.  Use arc4random(3).
>> -
>> ---- parse_utilities.c.orig  Mon Sep 22 12:57:41 2014
>> -+++ parse_utilities.c       Wed Jan  7 16:02:19 2015
>> -@@ -22,7 +22,9 @@
>> - #include "parser.h"
>> - #include <libgen.h>
>> - 
>> -+#ifndef __OpenBSD__
>> - #pragma mark - Parse Tree
>> -+#endif /* __OpenBSD__ */
>> - 
>> - /* Create a new node in the parse tree */
>> - node * mk_node(int key) {
>> -@@ -219,7 +221,9 @@ void append_list(node *new, node *list) {
>> -    }
>> - }
>> - 
>> -+#ifndef __OpenBSD__
>> - #pragma mark - Parser Data
>> -+#endif /* __OpenBSD__ */
>> - 
>> - /* Create parser data - this is where you stash stuff to communicate 
>> -    into and out of the parser */
>> -@@ -250,7 +254,9 @@ void free_parser_data(parser_data *data) {
>> - }
>> - 
>> - /* mk_scratch_pad -- store stuff here while exporting the result tree */
>> -+#ifndef HAVE_ARC4RANDOM
>> - void ran_start(long seed);
>> -+#endif
>> - scratch_pad * mk_scratch_pad(unsigned long extensions) {
>> -    scratch_pad *result = (scratch_pad *)malloc(sizeof(scratch_pad));
>> -    result->extensions = extensions;
>> -@@ -277,6 +283,7 @@ scratch_pad * mk_scratch_pad(unsigned long extensions)
>> -    result->table_alignment = NULL;
>> -    result->table_column = 0;
>> - 
>> -+#ifndef HAVE_ARC4RANDOM
>> -    if (extensions & EXT_RANDOM_FOOT) {
>> -        srand((int)time(NULL));
>> -            result->random_seed_base = rand() % 32000;
>> -@@ -285,6 +292,7 @@ scratch_pad * mk_scratch_pad(unsigned long extensions)
>> -            result->random_seed_base = 0;
>> -    }
>> -    ran_start(310952L);
>> -+#endif /* !HAVE_ARC4RANDOM */
>> -    
>> -    result->lyx_para_type = PARA;             /* CRC - Simple paragraph */
>> -    result->lyx_level = 0;                    /* CRC - out outside level */
>> Index: patches/patch-parser_leg
>> ===================================================================
>> RCS file: patches/patch-parser_leg
>> diff -N patches/patch-parser_leg
>> --- patches/patch-parser_leg 24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,19 +0,0 @@
>> -$OpenBSD: patch-parser_leg,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -Switch from sprintf(3) to snprintf(3)
>> -
>> ---- parser.leg.orig Mon Mar  9 18:52:39 2015
>> -+++ parser.leg      Sat Mar 21 15:44:10 2015
>> -@@ -562,8 +562,10 @@ AutoLinkUrl =   '<' < [A-Za-z]+ "://" ( !Newline !'>' 
>> - 
>> - AutoLinkEmail = '<' ( "mailto:"; )? < [-A-Za-z0-9+_./!%~$]+ '@' ( !Newline 
>> !'>' . )+ > '>'
>> -    {
>> --           char *mailto = malloc(strlen(yytext) + 8);
>> --           sprintf(mailto, "mailto:%s";, yytext);
>> -+           size_t mailto_len = strlen(yytext) + 8;
>> -+           char *mailto = malloc(mailto_len);
>> -+           assert(mailto);
>> -+           assert(snprintf(mailto,mailto_len,"mailto:%s",yytext) < 
>> mailto_len);
>> -            $$ = mk_link(str(yytext), NULL, mailto, NULL, NULL);
>> -            free(mailto);
>> -    }
>> Index: patches/patch-src_html_c
>> ===================================================================
>> RCS file: patches/patch-src_html_c
>> diff -N patches/patch-src_html_c
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_html_c 15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,53 @@
>> +$OpenBSD$
>> +
>> +Use srand_deterministic(3) if available.
>> +--- src/html.c.orig Wed Mar 16 13:35:47 2016
>> ++++ src/html.c      Wed Mar 16 13:42:24 2016
>> +@@ -115,7 +115,11 @@ void print_html_node(GString *out, node *n, scratch_pa
>> +                            scratch->footnote_para_counter --;
>> +                            if (scratch->footnote_para_counter == 0) {
>> +                                    if (scratch->extensions & 
>> EXT_RANDOM_FOOT) {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++                                           
>> srand_deterministic(scratch->random_seed_base + scratch->footnote_to_print);
>> ++#else
>> +                                            srand(scratch->random_seed_base 
>> + scratch->footnote_to_print);
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +                                            random = rand() % 99999 + 1;
>> +                                    } else {
>> +                                            random = 
>> scratch->footnote_to_print;
>> +@@ -599,7 +603,11 @@ void print_html_node(GString *out, node *n, scratch_pa
>> +                    temp_node = node_for_count(scratch->used_notes, lev);
>> +                    
>> +                    if (scratch->extensions & EXT_RANDOM_FOOT) {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++                           srand_deterministic(scratch->random_seed_base + 
>> lev);
>> ++#else
>> +                            srand(scratch->random_seed_base + lev);
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +                            random = rand() % 99999 + 1;
>> +                    } else {
>> +                            random = lev;
>> +@@ -653,7 +661,11 @@ void print_html_node(GString *out, node *n, scratch_pa
>> +                                    fprintf(stderr, "matching cite found - 
>> %d\n",lev);
>> + #endif
>> +                                    if (scratch->extensions & 
>> EXT_RANDOM_FOOT) {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++                                           
>> srand_deterministic(scratch->random_seed_base + lev);
>> ++#else
>> +                                            srand(scratch->random_seed_base 
>> + lev);
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +                                            random = rand() % 99999 + 1;
>> +                                    } else {
>> +                                            random = lev;
>> +@@ -946,7 +958,11 @@ void print_html_endnotes(GString *out, scratch_pad *sc
>> +            pad(out, 1, scratch);
>> +            
>> +            if (scratch->extensions & EXT_RANDOM_FOOT) {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++                   srand_deterministic(scratch->random_seed_base + 
>> counter);
>> ++#else
>> +                    srand(scratch->random_seed_base + counter);
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +                    random = rand() % 99999 + 1;
>> +            } else {
>> +                    random = counter;
>> Index: patches/patch-src_latex_c
>> ===================================================================
>> RCS file: patches/patch-src_latex_c
>> diff -N patches/patch-src_latex_c
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_latex_c        15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,29 @@
>> +$OpenBSD$
>> +
>> +Avoid strcat(3) using similar strategy to patch-src_writer_c.  Was also
>> +rejected by upstream, keeping to quell ld-time warnings about strcat(3).
>> +--- src/latex.c.orig        Wed Mar 16 13:44:52 2016
>> ++++ src/latex.c     Wed Mar 16 13:48:17 2016
>> +@@ -1218,16 +1218,16 @@ void print_latex_url(GString *out, char *str, 
>> scratch_
>> + char * correct_dimension_units(char *original) {
>> +    char *result;
>> +    int i;
>> +-   
>> ++   size_t result_len;
>> ++
>> +    result = strdup(original);
>> +-   
>> ++   result_len = strlen(result);
>> ++
>> +    for (i = 0; result[i]; i++)
>> +            result[i] = tolower(result[i]);
>> +    
>> +-   if (strstr(&result[strlen(result)-2],"px")) {
>> +-           result[strlen(result)-2] = '\0';
>> +-           strcat(result, "pt");
>> +-   }
>> ++   if (strstr(&result[result_len-2],"px"))
>> ++           result[result_len-1] = 't';
>> +    
>> +    return result;
>> + }
>> Index: patches/patch-src_multimarkdown_c
>> ===================================================================
>> RCS file: patches/patch-src_multimarkdown_c
>> diff -N patches/patch-src_multimarkdown_c
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_multimarkdown_c        15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,32 @@
>> +$OpenBSD$
>> +
>> +Use pledge(2) on OpenBSD.  Include <string.h> on OpenBSD so we can use
>> +strerror(3) if pledge(2) returns an error, as per practice elsewhere
>> +in the tree.
>> +--- src/multimarkdown.c.orig        Mon Feb 22 20:05:02 2016
>> ++++ src/multimarkdown.c     Wed Mar 16 14:56:04 2016
>> +@@ -63,6 +63,10 @@
>> + #include "parser.h"
>> + #include "transclude.h"
>> + #include "version.h"
>> ++#ifdef __OpenBSD__
>> ++#  include <errno.h>               /* errno */
>> ++#  include <string.h>              /* strerror(3) */
>> ++#endif /* __OpenBSD__ */
>> + 
>> + /// main()
>> + int main(int argc, char **argv)
>> +@@ -131,6 +135,13 @@ int main(int argc, char **argv)
>> +    unsigned long extensions = 0;
>> +    extensions = extensions | EXT_SMART | EXT_NOTES | EXT_OBFUSCATE;
>> +    
>> ++#ifdef __OpenBSD__
>> ++   if (pledge("stdio rpath wpath cpath", NULL) == -1) {
>> ++           fprintf(stderr, "%s: pledge: %s\n", argv[0], strerror(errno));
>> ++           exit(EXIT_FAILURE);
>> ++   }
>> ++#endif /* __OpenBSD__ */
>> ++
>> +    /* process options */
>> +    while (1) {
>> +            int option_index = 0;
>> Index: patches/patch-src_parse_utilities_c
>> ===================================================================
>> RCS file: patches/patch-src_parse_utilities_c
>> diff -N patches/patch-src_parse_utilities_c
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_parse_utilities_c      15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,31 @@
>> +$OpenBSD$
>> +
>> +Use srand_deterministic(3) on OpenBSD
>> +--- src/parse_utilities.c.orig      Wed Mar 16 14:30:51 2016
>> ++++ src/parse_utilities.c   Wed Mar 16 14:32:10 2016
>> +@@ -267,10 +267,18 @@ scratch_pad * mk_scratch_pad(unsigned long extensions)
>> +    result->inside_footnote = 0;
>> + 
>> +    if (extensions & EXT_RANDOM_FOOT) {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++       srand_deterministic((int)time(NULL));
>> ++#else
>> +        srand((int)time(NULL));
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +            result->random_seed_base = rand() % 32000;
>> +    } else {
>> ++#ifdef HAVE_SRAND_DETERMINISTIC
>> ++           srand_deterministic(1);
>> ++#else
>> +            srand(1);
>> ++#endif /* HAVE_SRAND_DETERMINISTIC */
>> +            result->random_seed_base = 0;
>> +    }
>> +    ran_start(310952L);
>> +@@ -905,4 +913,4 @@ char * my_strndup(const char * source, size_t n) {
>> +    result[len] = '\0';
>> + 
>> +    return result;
>> +-}
>> +\ No newline at end of file
>> ++}
>> Index: patches/patch-src_parser_leg
>> ===================================================================
>> RCS file: patches/patch-src_parser_leg
>> diff -N patches/patch-src_parser_leg
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_parser_leg     15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,16 @@
>> +$OpenBSD$
>> +
>> +s/sprintf/asprintf/ and die on malloc failure
>> +--- src/parser.leg.orig     Wed Mar 16 13:59:32 2016
>> ++++ src/parser.leg  Wed Mar 16 13:59:00 2016
>> +@@ -612,8 +612,8 @@ AutoLinkUrl =   '<' < [A-Za-z]+ "://" ( !Newline !'>' 
>> + 
>> + AutoLinkEmail = '<' ( "mailto:"; )? < [-A-Za-z0-9+_./!%~$]+ '@' ( !Newline 
>> !'>' . )+ > '>'
>> +    {
>> +-           char *mailto = malloc(strlen(yytext) + 8);
>> +-           sprintf(mailto, "mailto:%s";, yytext);
>> ++           char *mailto;
>> ++           assert(asprintf(&mailto, "mailto:%s";, yytext) >= 7);
>> +            $$ = mk_link(str(yytext), NULL, mailto, NULL, NULL);
>> +            free(mailto);
>> +    }
>> Index: patches/patch-src_writer_c
>> ===================================================================
>> RCS file: patches/patch-src_writer_c
>> diff -N patches/patch-src_writer_c
>> --- /dev/null        1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-src_writer_c       15 Apr 2016 20:30:02 -0000
>> @@ -0,0 +1,21 @@
>> +$OpenBSD$
>> +
>> +Avoid strcat(3).  Was rejected by upstream previously, keeping to quell
>> +ld-time warnings.
>> +--- src/writer.c.orig       Wed Mar 16 13:55:05 2016
>> ++++ src/writer.c    Wed Mar 16 13:58:02 2016
>> +@@ -696,11 +696,9 @@ char * dimension_for_attribute(char *querystring, node
>> +    fprintf(stderr, "b\n");
>> + #endif
>> + 
>> +-    if (strstr(dimension, "px")) {
>> +-        ptr = strstr(dimension,"px");
>> +-        ptr[0] = '\0';
>> +-        strcat(ptr,"pt");
>> +-    }
>> ++    ptr = strstr(dimension, "px");
>> ++    if (ptr)
>> ++        ptr[1] = 't'; /* px -> pt */
>> + 
>> +     result = g_string_new(dimension);
>> +     
>> Index: patches/patch-writer_c
>> ===================================================================
>> RCS file: patches/patch-writer_c
>> diff -N patches/patch-writer_c
>> --- patches/patch-writer_c   24 Mar 2015 19:16:13 -0000      1.1.1.1
>> +++ /dev/null        1 Jan 1970 00:00:00 -0000
>> @@ -1,42 +0,0 @@
>> -$OpenBSD: patch-writer_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $
>> -
>> -Switch from strcat to a safer idiom.
>> -
>> ---- writer.c.orig   Mon Mar  9 18:52:39 2015
>> -+++ writer.c        Sat Mar 21 15:44:10 2015
>> -@@ -648,6 +648,7 @@ char * dimension_for_attribute(char *querystring, node
>> -     int i;
>> -     char *upper;
>> -     GString *result;
>> -+    size_t dimension_len;
>> - 
>> -     attribute = node_for_attribute(querystring, list);
>> -     if (attribute == NULL) return NULL;
>> -@@ -655,6 +656,7 @@ char * dimension_for_attribute(char *querystring, node
>> -    fprintf(stderr, "a\n");
>> - #endif
>> - 
>> -+    dimension_len = strlen(attribute->children->str);
>> -     dimension = strdup(attribute->children->str);
>> -     upper = strdup(attribute->children->str);
>> - 
>> -@@ -667,15 +669,13 @@ char * dimension_for_attribute(char *querystring, node
>> -    fprintf(stderr, "b\n");
>> - #endif
>> - 
>> --    if (strstr(dimension, "px")) {
>> --        ptr = strstr(dimension,"px");
>> --        ptr[0] = '\0';
>> --        strcat(ptr,"pt");
>> --    }
>> -+    ptr = strstr(dimension, "px");
>> -+    if (ptr)
>> -+        ptr[1] = 't';
>> - 
>> -     result = g_string_new(dimension);
>> -     
>> --    if ((strcmp(dimension,upper) == 0) && (dimension[strlen(dimension) -1] 
>> != '%')) {
>> -+    if ((strcmp(dimension,upper) == 0) && (dimension[dimension_len-1] != 
>> '%')) {
>> -         /* no units */
>> -         g_string_append_printf(result, "pt");
>> -     }

--
http://haqistan.net/~attila | att...@stalphonsos.com | 0x62A729CF

Reply via email to