Member baru? Bingung? Perlu bantuan? Silakan baca panduan singkat untuk ikut berdiskusi.

Welcome to Forum Sains Indonesia. Please login or sign up.

April 20, 2024, 12:18:48 AM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 111
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 129
Total: 129

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

[ASK] bahasa C di debian ada error : "glibc free() invalid pointer"

Dimulai oleh fannush.akbar, Juli 16, 2013, 02:57:24 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

fannush.akbar

tolongin program saya dong sodara2..

pas ane compile keluar nih error : **** glibc detected *** free(): invalid pointer : 0xb7dfa0b4 ***

maksudnya apa ya ?? apa ada yang salah sama program saya??

ini potongan program saya ::

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <memory.h>

/*==== ada proses lain disini ====*/

void sign(void * buffer, void * signature, unsigned int buff_len,
unsigned int sign_buff_len, int use_cache)
{

   EC_PARAMETER   Base;
   EC_KEYPAIR      Signer;
   SIGNATURE      digsig;
   BIGINT         prime_order;
   POINT         temp;
   INDEX          i, error;

   char string1[MAXSTRING] = "5192296858534827627896703833467507";  /*N 113  */
   struct crypto_cache_node cache_node;
   unsigned char * tmp_buffer;

#ifdef TYPE2
   genlambda2();
#else
   genlambda();
#endif

/* load key dan Base point dari files */

   load_private(&Signer.prvt_key);
   load_base(&temp, &Base.pnt, &Base);
   random_seed = ipaddress;

/*  compute curve order from Koblitz data  */

   null( &Base.cofactor);
   Base.cofactor.e[NUMWORD] = 2;

/*  create Koblitz curve  */

   Base.crv.form = 1;
   one(&Base.crv.a2);
   one(&Base.crv.a6);

   if (crypto_cache_enabled && use_cache) {
      cache_node.buffer = buffer;
      cache_node.buffer_len = buff_len;
      cache_node.signature_len = sign_buff_len;
      cache_node.md_alg = md_alg;
      cache_node.alg = alg;
      
      tmp_buffer = search_crypto_cache_node(&cache_node);

      if (tmp_buffer == NULL) {
         tmp_buffer = ec_sign(buffer, buff_len, &Base, &Signer.prvt_key, &digsig);
         cache_node.signature = tmp_buffer;
         add_crypto_cache_node(&cache_node);
      }

   } else {

      tmp_buffer = ec_sign(buffer, buff_len, &Base, &Signer.prvt_key, &digsig);
      
      }

   memcpy(signature,tmp_buffer,sign_buff_len);
   
   free(tmp_buffer); <------- KEMUNGKINAN ERROR DISINI
}






terima kasih atas bantuannya  :) :)

adisae

Kutipvoid free (void* ptr);
Deallocate memory block
A block of memory previously allocated by a call to malloc, calloc or realloc is deallocated, making it available again for further allocations.

If ptr does not point to a block of memory allocated with the above functions, it causes undefined behavior.

If ptr is a null pointer, the function does nothing.

Notice that this function does not change the value of ptr itself, hence it still points to the same (now invalid) location.

mungkin karena alokasi tmp_buffer tidak menggunakan malloc, calloc ato realloc  :-\ ??