Re: [Perlgssapi-developer] Windows compile issues...
Brought to you by:
achimgrolms
From: Achim G. <per...@gr...> - 2006-02-11 13:35:43
|
On Friday 10 February 2006 18:05, Merijn Broeren wrote: > LNK2001: unresolved external symbol _gss_mech_krb5 GSSAPI.obj : error > LNK2001: unresolved external symbol _gss_mech_krb5_old =46rom my point of view it is impossible to import the Mechtype OIDs from external Headerfiles.(Too many differences from Implementation to Implementation) My simple solution: define the needed Kerberos Mechtype OIDs in GSSAPI itself (to be intependent from external header files). I've made that in my working copy and the changes passed all tests. What do you think? The Code is Index: GSSAPI.xs =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =2D-- GSSAPI.xs (revision 14) +++ GSSAPI.xs (working copy) @@ -3,6 +3,8 @@ #include "XSUB.h" /* #include=20 "/src/admin/kerberos/krb5-1.2.1-local/src/lib/gssapi/krb5/gssapiP_krb5.h" */ =20 +#define __KRB5_MECHTYPE_OID &mygss_mech_krb5 +#define __KRB5_OLD_MECHTYPE_OID &mygss_mech_krb5_old =20 #if defined(HEIMDAL) #include <gssapi.h> @@ -21,17 +23,12 @@ #include <gssapi/gssapi_krb5.h> #endif =20 =2D#if defined(HEIMDAL) =2D =2D#define gss_mech_krb5 GSS_KRB5_MECHANISM =2D static gss_OID_desc mygss_mech_krb5 =3D {9, (void *)=20 "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02"}; +static gss_OID_desc mygss_mech_krb5_old =3D {5, (void *)=20 "\x2b\x05\x01\x05\x02"}; =20 =20 +#if defined(HEIMDAL) =20 =2D =2D =2Dstatic gss_OID_desc mygss_mech_krb5_old =3D {5, (void *)=20 "\x2b\x05\x01\x05\x02"}; static gss_OID_desc* gss_mech_krb5_old =3D &mygss_mech_krb5_old; =20 static gss_OID_set_desc mygss_mech_set_krb5 =3D { 1, &mygss_mech_krb5 }; Index: test.pl =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =2D-- test.pl (revision 30) +++ test.pl (working copy) @@ -5,7 +5,7 @@ use ExtUtils::testlib; =20 use GSSAPI qw(:all); =2Duse Test::More tests =3D> 44; +use Test::More tests =3D> 49; =20 =20 ok( 1 =3D=3D 1 , 'Dummy (1 =3D=3D 1, should never fail.)' ); @@ -110,6 +110,20 @@ ok($status, '$oidset->contains(gss_nt_exported_name, $isin)'); ok(! $isin, '! $isin'); =20 + $status=3D $oidset->contains( gss_mech_krb5_old, $isin ); + + ok($status, '$oidset->contains( gss_mech_krb5_old , $isin)'); + ok(! $isin, '! gss_mech_krb5_old is not in'); + + $status =3D $oidset->insert( gss_mech_krb5_old ); + ok($status, ' $oidset->insert( gss_mech_krb5_old );'); + + $status=3D $oidset->contains( gss_mech_krb5_old, $isin ); + + ok($status, '$oidset->contains( gss_mech_krb5_old , $isin)'); + ok( $isin, ' gss_mech_krb5_old is in'); + + eval { $status =3D gss_mech_set_krb5->insert(gss_nt_user_name); }; Index: xs/OID.xs =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =2D-- xs/OID.xs (revision 14) +++ xs/OID.xs (working copy) @@ -14,7 +14,9 @@ OM_uint32 minor; PPCODE: #if !defined(HEIMDAL) =2D if (oid !=3D NULL) { + if (oid !=3D NULL && + oid !=3D __KRB5_MECHTYPE_OID && + oid !=3D __KRB5_OLD_MECHTYPE_OID ) { (void)gss_release_oid(&minor, &oid); } #endif @@ -137,14 +139,14 @@ GSSAPI::OID_const gss_mech_krb5() CODE: =2D RETVAL =3D gss_mech_krb5; + RETVAL =3D __KRB5_MECHTYPE_OID; OUTPUT: RETVAL =20 GSSAPI::OID_const gss_mech_krb5_old() CODE: =2D RETVAL =3D gss_mech_krb5_old; + RETVAL =3D __KRB5_OLD_MECHTYPE_OID; OUTPUT: RETVAL # Achim Grolms, 2006-02-04 |