Control: tags -1 patch pending

Dear maintainer,

I've prepared an NMU for rrdtool (versioned as 1.4.8-1.3) and
uploaded it to DELAYED/7. Please feel free to tell me if I
should delay it longer.

Regards.

-- 
Nirgal
diff -u rrdtool-1.4.8/debian/changelog rrdtool-1.4.8/debian/changelog
--- rrdtool-1.4.8/debian/changelog
+++ rrdtool-1.4.8/debian/changelog
@@ -1,3 +1,12 @@
+rrdtool (1.4.8-1.3) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix setlocale calls, causing free'd memory usage. Thanks Matthias Nagel.
+    (Closes: #751842)
+  * Add libpng-dev as an alternative to libpng12-dev. (Closes: #662494)
+
+ -- Jean-Michel Vourgère <nir...@debian.org>  Wed, 03 Jun 2015 23:38:18 +0200
+
 rrdtool (1.4.8-1.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -u rrdtool-1.4.8/debian/control rrdtool-1.4.8/debian/control
--- rrdtool-1.4.8/debian/control
+++ rrdtool-1.4.8/debian/control
@@ -5,7 +5,8 @@
 Uploaders: Sebastian Harl <tok...@debian.org>, Alexander Wirt <formo...@debian.org>, Bernd Zeimetz <b...@debian.org>
 Standards-Version: 3.9.5
 Build-Depends: debhelper (>= 9), groff, autotools-dev, dh-autoreconf, gettext, quilt,
- zlib1g-dev, libpng12-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev,
+ zlib1g-dev, libpng12-dev | libpng-dev, libcairo2-dev, libpango1.0-dev,
+ libfreetype6-dev,
  libdbi0-dev,
  libxml2-dev,
  tcl-dev (>= 8), tcl-dev (<= 9),
@@ -91,7 +92,7 @@
 Package: librrd-dev
 Architecture: any
 Section: libdevel
-Depends: libc6-dev | libc-dev, librrd4 (= ${binary:Version}), libpng12-dev, zlib1g-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev, libxml2-dev, ${misc:Depends}
+Depends: libc6-dev | libc-dev, librrd4 (= ${binary:Version}), libpng12-dev|libpng-dev, zlib1g-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev, libxml2-dev, ${misc:Depends}
 Provides: librrd2-dev
 Conflicts: librrd2-dev
 Replaces: librrd2-dev
diff -u rrdtool-1.4.8/debian/patches/series rrdtool-1.4.8/debian/patches/series
--- rrdtool-1.4.8/debian/patches/series
+++ rrdtool-1.4.8/debian/patches/series
@@ -8,0 +9 @@
+locale
only in patch2:
unchanged:
--- rrdtool-1.4.8.orig/debian/patches/locale
+++ rrdtool-1.4.8/debian/patches/locale
@@ -0,0 +1,148 @@
+Description: Fix usage of setlocale()
+ return a pointer to memory handled internally by libc, calling
+ setlocale twice and using the data returned from the first call
+ later on causes access to already free'd memory.
+Author: Peter Stamfest
+Applied-Upstream: commit:0e1608b77ca017b24917877488eacbbf2167c375
+Reviewed-by: Jean-Michel Vourgère <nir...@debian.org>
+Last-Update: 2015-06-01
+
+Index: rrdtool-1.4.8/src/rrd_create.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_create.c
++++ rrdtool-1.4.8/src/rrd_create.c
+@@ -595,8 +595,7 @@ void parseGENERIC_DS(
+        &(rrd -> ds_def[ds_idx].par[DS_mrhb_cnt].u_cnt),
+        minstr,maxstr);
+      */
+-    old_locale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
++    old_locale = setlocale(LC_NUMERIC, "C");
+     if (sscanf(def, "%lu:%18[^:]:%18[^:]",
+                &(rrd->ds_def[ds_idx].par[DS_mrhb_cnt].u_cnt),
+                minstr, maxstr) == 3) {
+Index: rrdtool-1.4.8/src/rrd_dump.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_dump.c
++++ rrdtool-1.4.8/src/rrd_dump.c
+@@ -103,9 +103,7 @@ int rrd_dump_cb_r(
+         return (-1);
+     }
+ 
+-    old_locale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
+-
++    old_locale = setlocale(LC_NUMERIC, "C");
+ 
+     if (opt_header == 1) {
+         CB_PUTS("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
+Index: rrdtool-1.4.8/src/rrd_graph.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_graph.c
++++ rrdtool-1.4.8/src/rrd_graph.c
+@@ -4012,8 +4012,7 @@ rrd_info_t *rrd_graph_v(
+     rrd_graph_init(&im);
+     size_t graphfile_len;
+     /* a dummy surface so that we can measure text sizes for placements */
+-    old_locale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
++    old_locale = setlocale(LC_NUMERIC, "C");
+     rrd_graph_options(argc, argv, &im);
+     if (rrd_test_error()) {
+         rrd_info_free(im.grinfo);
+Index: rrdtool-1.4.8/src/rrd_rpncalc.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_rpncalc.c
++++ rrdtool-1.4.8/src/rrd_rpncalc.c
+@@ -299,8 +299,7 @@ rpnp_t   *rpn_parse(
+     char      vname[MAX_VNAME_LEN + 10];
+     char     *old_locale;
+ 
+-    old_locale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
++    old_locale = setlocale(LC_NUMERIC, "C");
+ 
+     rpnp = NULL;
+     expr = (char *) expr_const;
+Index: rrdtool-1.4.8/src/rrd_tool.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_tool.c
++++ rrdtool-1.4.8/src/rrd_tool.c
+@@ -732,8 +732,7 @@ int HandleInputLine(
+         if (rrd_xport
+             (argc - 1, &argv[1], &xxsize, &start, &end, &step, &col_cnt,
+              &legend_v, &data) == 0) {
+-            char *old_locale = setlocale(LC_NUMERIC,NULL);
+-            setlocale(LC_NUMERIC, "C");
++            char *old_locale = setlocale(LC_NUMERIC, "C");
+             row_cnt = (end - start) / step;
+             ptr = data;
+             if (json == 0){
+Index: rrdtool-1.4.8/src/rrd_tune.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_tune.c
++++ rrdtool-1.4.8/src/rrd_tune.c
+@@ -126,8 +126,7 @@ int rrd_tune(
+         optcnt++;
+         switch (opt) {
+         case 'h':
+-            old_locale = setlocale(LC_NUMERIC, NULL);
+-            setlocale(LC_NUMERIC, "C");
++            old_locale = setlocale(LC_NUMERIC, "C");
+             if ((matches =
+                  sscanf(optarg, DS_NAM_FMT ":%ld", ds_nam,
+                         &heartbeat)) != 2) {
+@@ -147,8 +146,7 @@ int rrd_tune(
+             break;
+ 
+         case 'i':
+-            old_locale = setlocale(LC_NUMERIC, NULL);
+-            setlocale(LC_NUMERIC, "C");
++            old_locale = setlocale(LC_NUMERIC, "C");
+             if ((matches =
+                  sscanf(optarg, DS_NAM_FMT ":%lf", ds_nam, &min)) < 1) {
+                 rrd_set_error("invalid arguments for minimum ds value");
+@@ -170,8 +168,7 @@ int rrd_tune(
+             break;
+ 
+         case 'a':
+-            old_locale = setlocale(LC_NUMERIC, NULL);
+-            setlocale(LC_NUMERIC, "C");
++            old_locale = setlocale(LC_NUMERIC, "C");
+             if ((matches =
+                  sscanf(optarg, DS_NAM_FMT ":%lf", ds_nam, &max)) < 1) {
+                 rrd_set_error("invalid arguments for maximum ds value");
+Index: rrdtool-1.4.8/src/rrd_update.c
+===================================================================
+--- rrdtool-1.4.8.orig/src/rrd_update.c
++++ rrdtool-1.4.8/src/rrd_update.c
+@@ -970,8 +970,7 @@ static int get_time_from_reading(
+         *current_time = tmp_time.tv_sec;
+         *current_time_usec = tmp_time.tv_usec;
+     } else {
+-        old_locale = setlocale(LC_NUMERIC, NULL);
+-        setlocale(LC_NUMERIC, "C");
++        old_locale = setlocale(LC_NUMERIC, "C");
+         errno = 0;
+         tmp = strtod(updvals[0], 0);
+         if (errno > 0) {
+@@ -1083,8 +1082,7 @@ static int update_pdp_prep(
+                 }
+                 break;
+             case DST_ABSOLUTE:
+-                old_locale = setlocale(LC_NUMERIC, NULL);
+-                setlocale(LC_NUMERIC, "C");
++                old_locale = setlocale(LC_NUMERIC, "C");
+                 errno = 0;
+                 pdp_new[ds_idx] = strtod(updvals[ds_idx + 1], &endptr);
+                 if (errno > 0) {
+@@ -1102,8 +1100,7 @@ static int update_pdp_prep(
+                 rate = pdp_new[ds_idx] / interval;
+                 break;
+             case DST_GAUGE:
+-                old_locale = setlocale(LC_NUMERIC, NULL);
+-                setlocale(LC_NUMERIC, "C");
++                old_locale = setlocale(LC_NUMERIC, "C");
+                 errno = 0;
+                 pdp_new[ds_idx] =
+                     strtod(updvals[ds_idx + 1], &endptr) * interval;

Reply via email to