crypto/conf/conf.c:447: error: USE_AFTER_FREE
  accessing memory that was invalidated by call to `free()` on line 449.
Showing all 14 steps of the trace


crypto/conf/conf.c:435:1: invalidation part of the trace starts here
433.   	}
434.   
435. > static void value_free_stack(CONF_VALUE *a, LHASH *conf)
436.   	{
437.   	CONF_VALUE *vv;

crypto/conf/conf.c:435:1: parameter `a` of value_free_stack
  433.   	}
  434.   
  435. > static void value_free_stack(CONF_VALUE *a, LHASH *conf)
  436.   	{
  437.   	CONF_VALUE *vv;

crypto/conf/conf.c:443:2: assigned
  441.   	if (a->name != NULL) return;
  442.   
  443.   	sk=(STACK *)a->value;
          ^
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{

crypto/conf/conf.c:446:20: passed as argument to `sk_value`
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
                            ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:446:20: return from call to `sk_value`
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
                            ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:446:3: assigned
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
           ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:449:3: was invalidated by call to `free()`
  447.   		Free(vv->value);
  448.   		Free(vv->name);
  449.   		Free(vv);
           ^
  450.   		}
  451.   	if (sk != NULL) sk_free(sk);

crypto/conf/conf.c:435:1: use-after-lifetime part of the trace starts here
433.   	}
434.   
435. > static void value_free_stack(CONF_VALUE *a, LHASH *conf)
436.   	{
437.   	CONF_VALUE *vv;

crypto/conf/conf.c:435:1: parameter `a` of value_free_stack
  433.   	}
  434.   
  435. > static void value_free_stack(CONF_VALUE *a, LHASH *conf)
  436.   	{
  437.   	CONF_VALUE *vv;

crypto/conf/conf.c:443:2: assigned
  441.   	if (a->name != NULL) return;
  442.   
  443.   	sk=(STACK *)a->value;
          ^
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{

crypto/conf/conf.c:446:20: passed as argument to `sk_value`
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
                            ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:446:20: return from call to `sk_value`
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
                            ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:446:3: assigned
  444.   	for (i=sk_num(sk)-1; i>=0; i--)
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
           ^
  447.   		Free(vv->value);
  448.   		Free(vv->name);

crypto/conf/conf.c:447:3: invalid access occurs here
  445.   		{
  446.   		vv=(CONF_VALUE *)sk_value(sk,i);
  447.   		Free(vv->value);
           ^
  448.   		Free(vv->name);
  449.   		Free(vv);

static void value_free_stack(CONF_VALUE *a, LHASH *conf)
	{
	CONF_VALUE *vv;
	STACK *sk;
	int i;
	if (a->name != NULL) return;
	sk=(STACK *)a->value;
	for (i=sk_num(sk)-1; i>=0; i--)
		{
		vv=(CONF_VALUE *)sk_value(sk,i);
		Free(vv->value);
		Free(vv->name);
		Free(vv);
		}
	if (sk != NULL) sk_free(sk);
	Free(a->section);
	Free(a);
	}
['static void value_free_stack(CONF_VALUE *a, LHASH *conf)\n\t{\n\tCONF_VALUE *vv;\n\tSTACK *sk;\n\tint i;\n\tif (a->name != NULL) return;\n\tsk=(STACK *)a->value;\n\tfor (i=sk_num(sk)-1; i>=0; i--)\n\t\t{\n\t\tvv=(CONF_VALUE *)sk_value(sk,i);\n\t\tFree(vv->value);\n\t\tFree(vv->name);\n\t\tFree(vv);\n\t\t}\n\tif (sk != NULL) sk_free(sk);\n\tFree(a->section);\n\tFree(a);\n\t}']