[Date Prev][Date Next] [Chronological] [Thread] [Top]

Is this a bug?



Hi,

I tried a little c-programming and came across a segmentation fault, I don't
understand:
Here is the code:
-----------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <lber.h>
#include <ldap.h>

void dn2xmlanrede(char *dn, char *ldaphost)
{
  LDAP *ld;
  LDAPMessage *res;
  char *ldhost, *sn, *base;
  char *attrs[] = {"l", "streetAddress", "postalAddress", "postalCode", "sn", "givenName", "gender"};
  int gender=0, anrlen, ret;

  ld = ldap_open(ldaphost, 389);
  base = strdup(dn);
  ret = ldap_simple_bind_s(ld, "", "");
  if(ret < 0)
    ldap_perror(ld, "simple bind failed");
  else
  {
    ret = ldap_search_s(ld, base, 0, "objectclass=*", attrs, 0, &res);
    if(ldap_count_entries(ld, res) > 0)
    {
      LDAPMessage *entry;
      char **vals;
      
      entry = ldap_first_entry(ld, res);
      vals = ldap_get_values(ld, entry, "sn");
      sn = strdup(vals[0]);
      vals = ldap_get_values(ld, entry, "gender");
      gender = !strcmp(vals[0], "female");
      if(gender)
	printf("<ANREDE>Frau %s</ANREDE>\n", sn);
      else
	sprintf("<ANREDE>Herr %s</ANREDE>\n", sn);
    }
    else
    {
      printf("Nix gefunden\n");
    }
  }
  printf("Nix gefunden");
}

int main(int argc, char **argv)
{
  dn2xmlanrede(argv[1], "localhost");
}
-----------------------------------------------------------
This gives me a segmentation fault in ldap_searc_s. I see the ldap_open, and
ldap_bind working, but than it fails.
I have a similar piece of code working. 
Somebody has a idea?

Konstantin
-- 
Dipl-Inf. Konstantin Agouros aka Elwood Blues. Internet: elwood@agouros.de
Otkerstr. 28, 81547 Muenchen, Germany. Tel +49 89 69370185
----------------------------------------------------------------------------
"Captain, this ship will not sustain the forming of the cosmos." B'Elana Torres