Exemple #1
0
static void test_mmap_delete(abts_case *tc, void *data)
{
    apr_status_t rv;

    ABTS_PTR_NOTNULL(tc, themmap);
    rv = apr_mmap_delete(themmap);
    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
}
Exemple #2
0
static int JK_METHOD jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
{
    apr_mmap_t *aprShm=(apr_mmap_t *)shm->privateData;

    if( aprShm==NULL )
        return JK_OK;
    
    return apr_mmap_delete(aprShm);
}
Exemple #3
0
		int load( const char* filename )
		{
			free( resource );
			apr_file_t* newfile;
			apr_file_open( &newfile, filename, APR_READ, APR_OS_DEFAULT, mempool );
			apr_finfo_t finfo;
			apr_file_info_get( &finfo, APR_FINFO_SIZE, newfile );
			apr_mmap_t* mmap;
			apr_mmap_create( &mmap, newfile, 0, finfo.size, APR_MMAP_READ, mempool );
			resource = (char*)malloc( finfo.size );
			memcpy( resource, mmap->mm, finfo.size );
			apr_mmap_delete( mmap );
		}
Exemple #4
0
apr_status_t kahanaUtilChecksum( apr_pool_t *p, kCheckSumType_e type, const char **hex_digest, const char *msg, ... )
{
	apr_status_t rc = APR_SUCCESS;
	char *keys = NULL;
	
	if( !( keys = calloc( 0, sizeof( char ) ) ) ){
		rc = APR_ENOMEM;
	}
	else
	{
		va_list args;
		char *key;
		int i, len = 0;
		
		va_start( args, msg );
		while( ( key = va_arg( args, char* ) ) )
		{
			if( ( i = strlen( key ) ) )
			{
				if( !( keys = realloc( keys, len + i + 1 ) ) ){
					rc = APR_ENOMEM;
					len = 0;
					break;
				}
				memcpy( keys + len, key, i );
				len += i;
				keys[len] = '\0';
			}
		}
		va_end( args );
		
		if( len )
		{
			rc = APR_SUCCESS;
			if( type == CHKSUM_STR )
			{
				char *m = NULL;
				
				if( asprintf( &m, "%s", msg ) == -1 ){
					rc = APR_ENOMEM;
				}
				else {
					*hex_digest = kahanaUtilHMACSHA1( p, (unsigned char*)keys, len, (const unsigned char*)m, strlen( m ) );
					free( m );
				}
			}
			else if( type == CHKSUM_FILE )
			{
				apr_file_t *fp = NULL;
				
				if( ( rc = apr_file_open( &fp, msg, APR_READ|APR_BINARY, APR_OS_DEFAULT, p ) ) == APR_SUCCESS )
				{
					apr_finfo_t finfo;
					apr_mmap_t *mm = NULL;

					if( ( rc = apr_file_info_get( &finfo, APR_FINFO_SIZE, fp ) ) == APR_SUCCESS &&
						( rc = apr_mmap_create( &mm, fp, 0, finfo.size, APR_MMAP_READ, p ) ) != APR_SUCCESS ){
						mm = NULL;
					}
					apr_file_close( fp );
					
					if( mm ){
						*hex_digest = kahanaUtilHMACSHA1( p, (unsigned char*)keys, len, mm->mm, finfo.size );
						rc = apr_mmap_delete( mm );
					}
				}
			}
			else {
				rc = APR_BADARG;
			}
		}
		free( keys );
	}
	
	return rc;
}