On Tue, 2007-02-27 at 14:30 -0300, Claudio Saavedra wrote: > Quoting Fran <[EMAIL PROTECTED]>: > > > > > El programa falla al realizar la función g_sprintf y no entiendo nada, > > > > ya que he hecho lo mismo pero con las funciones sprintf y los datos > > > > char e int, y funciona perfectamente. Así que creo que es problema de > > > > la glib, concretamente uso la 2.10 que está en los repositorios de > > > > Ubuntu Dapper. > > > > > > El problema es que g_sprintf () espera que el gchar* que le pases sea un > > puntero > > > a un buffer con la memoria necesaria ya reservada. Si deseas que glib se > > > encargue de reservar la memoria por ti, entonces lo que necesitas es usar > > > g_strdup_printf (). > > > > > (...) > > ¡Vaya fallo más tonto! En un principio pensé que sería por algún tema > > de reserva de memoria, pero al ver que con sprintf funcionaba y que la > > equivalente en glib g_sprintf no, pues me volví loco. > > > Ojo, que sprintf () tampoco reserva memoria por tí. Si funciona, es por > suerte, > pero no tienes garantías de no se produzca corrupción de memoria.
De hecho, como dice Claudio, si funciona es pura casualidad. Por otro lado, sprintf no verifica el buffer en el escribe; simplemente lo hace. Una de las funciones que se hicieron famosos por los 'Buffer Overflow'. Basta ver la sección 'BUGS' del manual de sprintf(3). -- Germán Poó Caamaño Concepción - Chile _______________________________________________ Gnome-desarrollo mailing list Gnome-desarrollo@es.gnome.org https://listas.es.gnome.org/mailman/listinfo/gnome-desarrollo