[rpm] sypie sie i nie kumam...

Andrzej Krzysztofowicz ankry w green.mif.pg.gda.pl
Pon, 29 Mar 2004, 12:23:21 CEST


=?ISO-8859-2?Q?Pawe=B3_Sikora?= wrote:
> mamy taki oto fragment kodu...
> 
> [rpm/lib/rpmrc.c]
> 
> static void defaultMachine(const char ** arch, const char ** os)
> {
>     static struct utsname un;
> 
> (...)
> 
>     }
> 
> // tu moje debugi (puts&printf)
> puts("#x");
> printf("un.machine = %s, un.sysname = %s\n", un.machine, un.sysname);
> printf("arch_ptr = %08x, os_ptr = %08x\n", arch, os);
> printf("*arch = %08x\n", *arch);
> printf("*os = %08x\n", *os);
> 
>     if (arch) *arch = un.machine;
>     if (os) *os = un.sysname;
> 
> puts("#y");
> }
> 
> i fragment, ktory wysypuje program.
> 
> (
> [~/rpm/BUILD/rpm-4.3] # ./rpm
> call#2
> #x
> un.machine = i686, un.sysname = Linux
> arch_ptr = 756e6547, os_ptr = bfffe1f8
> Naruszenie ochrony pamięci
> )
> 
> void rpmSetMachine(const char * arch, const char * os)
>         /*@globals current @*/
>         /*@modifies current @*/
> {
> //    const char * host_cpu, * host_os;
>     char * host_cpu, * host_os;
> puts("call#2");
>     defaultMachine(&host_cpu, &host_os);

A gdzie jest robiony malloc() pamieci dla zapisywanych danych ?

> 
> i teraz pytanie: WTF ?
> przeciez adresy wskaznikow sa przekazywane prawidlowo
> i ich ustawienie w defaultMachine, tez jest zgodne z zasadami sztuki.

-- 
=======================================================================
  Andrzej M. Krzysztofowicz               ankry w mif.pg.gda.pl
  phone (48)(58) 347 14 61
Faculty of Applied Phys. & Math.,   Gdansk University of Technology



Więcej informacji o liście dyskusyjnej pld-devel-pl