aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mageia.org>2012-08-10 23:53:33 +0000
committerPascal Terjan <pterjan@mageia.org>2012-08-10 23:53:33 +0000
commit3093688d4264f5c53bb0fa6dafca3b65e8875b5b (patch)
tree7ed8c2a68e6f4ce0c723dca7e0c8ca7c172229b3
parentca28862a178c8988d0dafb5c8386f8f1652f553a (diff)
downloadperl-URPM-3093688d4264f5c53bb0fa6dafca3b65e8875b5b.tar
perl-URPM-3093688d4264f5c53bb0fa6dafca3b65e8875b5b.tar.gz
perl-URPM-3093688d4264f5c53bb0fa6dafca3b65e8875b5b.tar.bz2
perl-URPM-3093688d4264f5c53bb0fa6dafca3b65e8875b5b.tar.xz
perl-URPM-3093688d4264f5c53bb0fa6dafca3b65e8875b5b.zip
Don't read/write after the string when the synthesis is slightly malformed
-rw-r--r--URPM.xs2
-rw-r--r--t/synthesis.t2
2 files changed, 2 insertions, 2 deletions
diff --git a/URPM.xs b/URPM.xs
index b0338b1..b7a6462 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -1759,7 +1759,7 @@ Pkg_filename(pkg)
if (pkg->info) {
char *eon;
- if ((eon = strchr(pkg->info, '@')) != NULL) {
+ if ((eon = strchr(pkg->info, '@')) != NULL && strlen(eon) >= 3) {
char savbuf[4];
memcpy(savbuf, eon, 4); /* there should be at least epoch and size described so (@0@0 minimum) */
memcpy(eon, ".rpm", 4);
diff --git a/t/synthesis.t b/t/synthesis.t
index 8246b36..1b7e8d6 100644
--- a/t/synthesis.t
+++ b/t/synthesis.t
@@ -14,7 +14,7 @@ my $s = <<'EOF';
@requires@/sbin/install-info@glibc == 2.2.4@kernel-headers@kernel-headers >= 2.2.1@/bin/sh@/bin/sh@/bin/sh@rpmlib(PayloadFilesHavePrefix) <= 4.0-1@rpmlib(CompressedFileNames) <= 3.0.4-1
@conflicts@texinfo < 3.11@gcc < 2.96-0.50mdk
@obsoletes@libc-debug@libc-headers@libc-devel@linuxthreads-devel@glibc-debug
-@info@glibc-devel-2.2.4-25mdk.i586@6@45692097@Development/C
+@info@glibc-devel-2.2.4-25mdk.i586@
EOF
open my $f, "| gzip -9 >$file1";