Uploaded image for project: 'Axis2-C'
  1. Axis2-C
  2. AXIS2C-1602

memory leaks in xpath

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.6.0
    • 1.7.0
    • xml/om
    • Windows XP, MSVS 2008

    Description

      xpath.c :: axiom_xpath_free_expression doesn't free the parameters of the operations. At least the following code is needed:

      if (xpath_expr->operations)
      {
      num = axutil_array_list_size(xpath_expr->operations, env);
      for (i=0; i<num; i++) {
      op = (axiom_xpath_operation_t *) axutil_array_list_get(xpath_expr->operations, env, i);
      if (op->par1)

      { node_test = (axiom_xpath_node_test_t *)op->par1; if (node_test->prefix) AXIS2_FREE(env->allocator, node_test->prefix); if (node_test->name) AXIS2_FREE(env->allocator, node_test->name); if (node_test->lit) AXIS2_FREE(env->allocator, node_test->lit); AXIS2_FREE(env->allocator, op->par1); }

      if (op->par2) AXIS2_FREE(env->allocator, op->par2);
      AXIS2_FREE(env->allocator, op);
      }
      axutil_array_list_free(xpath_expr->operations, env);
      xpath_expr->operations = NULL;
      }

      ------------------

      xpath.c :: axiom_xpath_free_result doesn't free the nodes from the result array list. At least the following is needed:

      if (result->nodes)
      {
      num = axutil_array_list_size(result->nodes, env);
      for (i=0; i<num; i++)

      { node = (axiom_xpath_result_node_t *) axutil_array_list_get(result->nodes, env, i); AXIS2_FREE(context->env->allocator, node); }

      axutil_array_list_free(result->nodes, env);
      }

      ------------------

      xpath_internals_parser.c :: A strdup of a name is left unfreed in axiom_xpath_compile_step in the else clause.

      name = axiom_xpath_compile_ncname(env, expr);

      if (name)
      {
      AXIOM_XPATH_SKIP_WHITESPACES;

      /* An axis */
      if (AXIOM_XPATH_CURRENT == ':' && AXIOM_XPATH_NEXT(1) == ':')

      { [..snip..] }

      else

      { AXIS2_FREE(env->allocator, name); <----- NEEDED axis = AXIOM_XPATH_AXIS_CHILD; expr->expr_ptr = temp_ptr; }

      Attachments

        Issue Links

          Activity

            People

              billblough Bill Blough
              drstine Daniel Stine
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: