Here is the patch that Ubuntu has applied.

Thanks.

Kind Regards,
Dave Walker
Description: support XML security signatures.
Author: Neil Soman <n...@eucalyptus.com>

Index: rampart-1.3.0/src/omxmlsec/c14n/c14n.c
===================================================================
--- rampart-1.3.0.orig/src/omxmlsec/c14n/c14n.c	2011-04-26 15:40:58.518406296 -0700
+++ rampart-1.3.0/src/omxmlsec/c14n/c14n.c	2011-04-26 15:41:22.518703783 -0700
@@ -32,6 +32,7 @@
 #include <oxs_constants.h>
 #include <oxs_c14n.h>
 #include "c14n_sorted_list.h"
+#include <axiom_data_source.h>
 
 #define N_C14N_DEBUG
 
@@ -727,6 +728,35 @@
     return AXIS2_SUCCESS;
 }
 
+
+static axis2_status_t
+c14n_apply_on_data_source (
+   const axiom_node_t *node,
+   const c14n_ctx_t *ctx
+)
+{
+  axiom_data_source_t *src = NULL;
+  src = (axiom_data_source_t *)axiom_node_get_data_element((axiom_node_t *)node,
+						     ctx->env);
+
+  if (src)
+    {
+      axutil_stream_t *stream = axiom_data_source_get_stream(src, ctx->env);
+
+      if(stream == NULL)
+	return AXIS2_FAILURE;
+
+      axis2_char_t*  buf =  axutil_stream_get_buffer(stream, ctx->env);
+      if(buf == NULL)
+	return AXIS2_FAILURE;
+
+      c14n_output(buf, ctx);
+      buf = NULL;
+    }
+
+return AXIS2_SUCCESS;
+}
+
 static axis2_status_t
 c14n_apply_on_node (
     const axiom_node_t *node,
@@ -748,6 +778,9 @@
             c14n_apply_on_comment(node, ctx);
             break;
         }
+    case AXIOM_DATA_SOURCE:
+      c14n_apply_on_data_source(node, ctx);
+      break;
     case AXIOM_DOCTYPE:
     case AXIOM_PROCESSING_INSTRUCTION:
     default:
Index: rampart-1.3.0/src/util/rampart_timestamp_token.c
===================================================================
--- rampart-1.3.0.orig/src/util/rampart_timestamp_token.c	2011-04-26 15:41:13.698594433 -0700
+++ rampart-1.3.0/src/util/rampart_timestamp_token.c	2011-04-26 15:41:49.619039939 -0700
@@ -207,7 +207,7 @@
     rampart_set_security_processed_result(env, msg_ctx,RAMPART_SPR_TS_EXPIRES, expires_val);
 
     /* Check whether time has expired or not */
-    validity = rampart_compare_date_time(env, created_val, expires_val);
+    validity = rampart_compare_date_time(env, current_val, expires_val);
     if (validity == AXIS2_FAILURE)
     {
         /* this means created_value > expires_value. Which is not valid */

Reply via email to