diff --git a/gnu/local.mk b/gnu/local.mk index 696fe73d96..e619ab688c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2027,6 +2027,7 @@ dist_patch_DATA = \ %D%/packages/patches/openrgb-unbundle-hueplusplus.patch \ %D%/packages/patches/openscad-fix-path-in-expected-test-results-to-acommodate-diff.patch \ %D%/packages/patches/opensles-add-license-file.patch \ + %D%/packages/patches/opensp-maxpathlen.patch \ %D%/packages/patches/openssl-1.1-c-rehash-in.patch \ %D%/packages/patches/openssl-3.0-c-rehash-in.patch \ %D%/packages/patches/openssl-hurd64.patch \ diff --git a/gnu/packages/patches/opensp-maxpathlen.patch b/gnu/packages/patches/opensp-maxpathlen.patch new file mode 100644 index 0000000000..9b141472ed --- /dev/null +++ b/gnu/packages/patches/opensp-maxpathlen.patch @@ -0,0 +1,41 @@ +Adapted from https://sources.debian.org/src/opensp/1.5.2-15.2/debian/patches/diff-1.0.patch + +Index: OpenSP-1.5.2/sx/XmlOutputEventHandler.cxx +=================================================================== +--- OpenSP-1.5.2.orig/sx/XmlOutputEventHandler.cxx ++++ OpenSP-1.5.2/sx/XmlOutputEventHandler.cxx +@@ -1199,12 +1199,22 @@ void XmlOutputEventHandler::inputOpened( + // Check to make sure we haven't passed outside of the + // output directory + char *dirs = strdup (filePath); ++#ifdef MAXPATHLEN + char realDirs[MAXPATHLEN]; + char realOutputDir[MAXPATHLEN]; ++#else ++ char *realDirs; ++ char *realOutputDir; ++#endif + char *outputDir = strdup(outputDir_); + ++#ifdef MAXPATHLEN + realpath((const char *)dirname(dirs), realDirs); + realpath((const char *)dirname(outputDir), realOutputDir); ++#else ++ realDirs = realpath((const char *)dirname(dirs), NULL); ++ realOutputDir = realpath((const char *)dirname(outputDir), NULL); ++#endif + + if (strncmp(realDirs, realOutputDir, strlen (realOutputDir)) != 0) { + app_->message(XmlOutputMessages::pathOutsideOutputDirectory, +@@ -1214,6 +1224,11 @@ void XmlOutputEventHandler::inputOpened( + } + } + ++#ifndef MAXPATHLEN ++ free(realDirs); ++ free(realOutputDir); ++#endif ++ + // Make the necessary directories + maybeCreateDirectories(dirname(dirs)); + diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 38606df7a1..1660feb853 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -1845,6 +1845,13 @@ modular implementation of XML-RPC for C and C++.") #:make-flags #~(list "TESTS_THAT_FAIL=") #:phases #~(modify-phases %standard-phases + #$@(if (target-hurd?) + #~((add-after 'unpack 'patch-hurd + (lambda _ + (let ((patch #$(local-file + (search-patch "opensp-maxpathlen.patch")))) + (invoke "patch" "--force" "-p1" "-i" patch))))) + #~()) (add-after 'unpack 'delete-configure ;; The configure script in the release was made with an older ;; Autoconf and lacks support for the `--docdir' option.