FriBID är ett fritt program för e-legitimation med BankID.
OBS! FriBID är i praktiken nedlagt, och fungarar inte att använda längre.
You are not logged in.
Pages: 1
Har testat den nya mastern configure / make med bsd make det gick bra så länge inte --with-gtk=2 är satt i configure steget.
detta ger
"
Package 'gtk+-2.0 was not found in the pkg-config search path
Package >= was not found in the pkg-config search path
Package 2.18' was not found in the pkg-config search path
backend.c:29:18: error: glib.h: No such file or directory
"
Jag tror att försöket till versionstestet i raden:
"
gtk2libs=$([ "x`getconfig WITH_GTK2`" = "x1" ] && echo "'gtk+-2.0 >= 2.18' gdk-2.0")
"
är överflödigt.
versionstest körs ändå på rad: 206.
föreslår därför nedanstående patch:
$ diff -bu configure.bu configure
--- configure.bu Mon Apr 14 08:40:32 2014
+++ configure Mon Apr 14 10:59:12 2014
@@ -203,7 +203,7 @@
;;
--internal--get-pc-cflags|--internal--get-pc-libs)
[ ! -r "$basedir/common/config.h" ] && exit 1
- gtk2libs=$([ "x`getconfig WITH_GTK2`" = "x1" ] && echo "'gtk+-2.0 >= 2.18' gdk-2.0")
+ gtk2libs=$([ "x`getconfig WITH_GTK2`" = "x1" ] && echo "gtk+-2.0")
gtk3libs=$([ "x`getconfig WITH_GTK3`" = "x1" ] && echo "gtk+-3.0")
pkcs11libs=$([ "x`getconfig ENABLE_PKCS11`" = "x1" ] && echo "libp11")
if [ "x$flag" = "x--internal--get-pc-cflags" ]; then
Fick också nedanstående varningar under kompilering:
*** Warning in /home/ole/Downloads/fribid-master/client: "../configure --internal--list-extra-objects" returned non-zero status (Makefile:39)
xmldsig.o(.text+0x10b): In function `xmldsig_sign':
: warning: sprintf() is often misused, please use snprintf()
/Ole
Offline
Tack för ännu en BSD-bugfix! Fixade även varningen om non-zero return från configure (tror jag iaf, testa gärna). Båda fixarna är pushade till GIT-repositoryna.
Den sista varningen är lite knepigare. Det verkar inte vara något fel eftersom längden för sprintf()s buffert beräknas innan, men det är klart att det vore trevligt om man kunde slippa den varningen också.
Offline
Tackar
körde om hela proceduren, det gick bra!
angående:
"
warning: sprintf() is often misused, please use snprintf()
"
hackade jag om den enl OpenBSD man page för sprintf 3.
se patch:
$ diff -bu client/xmldsig.c.orig client/xmldsig.c
--- client/xmldsig.c.orig Mon Apr 14 11:29:20 2014
+++ client/xmldsig.c Mon Apr 14 13:29:06 2014
@@ -100,7 +100,7 @@
char *keyend = keyinfoInner;
for (size_t i = 0; i < certCount; i++) {
- keyend += sprintf(keyend, cert_template, certs[i]);
+ keyend += snprintf(keyend, sizeof(keyend), cert_template, certs[i]);
free(certs[i]);
}
free(certs);
för referens se: http://www.openbsd.org/cgi-bin/man.cgi
titta gärna på strlcpy också där utreds ärendet ytterligare.
på http://stackoverflow.com/questions/7315 … ore-secure
finns mer diskussioner...
Offline
Ursäkta det pinsamma misstaget med sizeof ...
Har gjort ett nytt försök,
se diffen :
$ diff -bu client/xmldsig.c.orig client/xmldsig.c
--- client/xmldsig.c.orig Mon Apr 14 11:29:20 2014
+++ client/xmldsig.c Mon Apr 21 18:47:22 2014
@@ -81,7 +81,7 @@
char **certs = NULL;
char *keyinfo = NULL, *signedinfo = NULL;
char *complete = NULL;
- size_t certCount;
+ size_t certCount, tmp;
// Keyinfo
if (!token_getBase64Chain(token, &certs, &certCount)) goto error;
@@ -99,8 +99,15 @@
keyinfoInner[0] = '\0';
char *keyend = keyinfoInner;
+ certsLength += strlen( cert_template);
for (size_t i = 0; i < certCount; i++) {
- keyend += sprintf(keyend, cert_template, certs[i]);
+ tmp = snprintf(keyend, certsLength, cert_template, certs[i]);
+ keyend += tmp;
+ if ( certsLength >= tmp)
+ certsLength -= tmp;
+ else
+ break;
+ certsLength += strlen( cert_template);
free(certs[i]);
}
free(certs);
Den kanske är överarbetad och stjälper mer än den hjälper.
Har iallafall provat den skarpt en gång.
funderar också på om "breaket" skulle ersättas med ett "goto error".
Offline
Pages: 1