~ubuntu-branches/ubuntu/maverick/openldap/maverick-proposed

« back to all changes in this revision

Viewing changes to servers/slapd/alock.c

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug, Steve Langasek, Mathias Gug
  • Date: 2009-02-18 18:44:00 UTC
  • mfrom: (1.1.2 upstream) (0.1.2 lenny)
  • Revision ID: james.westby@ubuntu.com-20090218184400-zw4mjse9eywt5566
Tags: 2.4.14-0ubuntu1
[ Steve Langasek ]
* New upstream version
  - Fixes a bug with the pcache overlay not returning cached entries
    (closes: #497697)
  - Update evolution-ntlm patch to apply to current Makefiles.
  - (tentatively) drop gnutls-ciphers, since this bug was reported to be
    fixed upstream in 2.4.8.  The fix applied in 2.4.8 didn't match the
    patch from the bug report, so this should be watched for regressions.
* Build against db4.7 instead of db4.2 at last!  Closes: #421946.
* Build with --disable-ndb, to avoid a misbuild when libmysqlclient is
  installed in the build environment.
* New patch, no-crlcheck-for-gnutls, to fix a build failure when using
  --with-tls=gnutls.

[ Mathias Gug ]
* Merge from debian unstable, remaining changes:
  - debian/apparmor-profile: add AppArmor profile
  - debian/slapd.postinst: Reload AA profile on configuration
  - updated debian/slapd.README.Debian for note on AppArmor
  - debian/control: Recommends apparmor >= 2.1+1075-0ubuntu6
  - debian/control: Conflicts with apparmor-profiles << 2.1+1075-0ubuntu4
    to make sure that if earlier version of apparmour-profiles gets
    installed it won't overwrite our profile.
  - Modify Maintainer value to match the DebianMaintainerField
    speficication.
  - follow ApparmorProfileMigration and force apparmor compalin mode on 
    some upgrades (LP: #203529)
  - debian/slapd.dirs: add etc/apparmor.d/force-complain
  - debian/slapd.preinst: create symlink for force-complain on pre-feisty
    upgrades, upgrades where apparmor-profiles profile is unchanged (ie
    non-enforcing) and upgrades where apparmor profile does not exist.
  - debian/slapd.postrm: remove symlink in force-complain/ on purge
  - debian/patches/fix-ucred-libc due to changes how newer glibc handle
    the ucred struct now.
  - debian/control:
    - Build-depend on libltdl7-dev rather then libltdl3-dev.
  - debian/patches/autogen.sh:
    - Call libtoolize with the --install option to install config.{guess,sub}
      files.
  - Don't use local statement in config script as it fails if /bin/sh
    points to bash (LP: #286063).
  - Disable the testsuite on hppa. Allows building of packages on this
    architecture again, once this package is in the archive.
    LP: #288908.
  - debian/slapd.postinst, debian/slapd.script-common: set correct ownership
    and permissions on /var/lib/ldap, /etc/ldap/slapd.d (group readable) and
    /var/run/slapd (world readable). (LP: #257667).
  - debian/patches/nssov-build, debian/rules: 
    Build and package the nss overlay.
    debian/schema/misc.ldif: add ldif file for the misc schema, which defines
    rfc822MailMember (required by the nss overlay).
  - debian/{control,rules}: enable PIE hardening
  - Use cn=config as the default configuration backend instead of 
    slapd.conf. Migrate slapd.conf  file to /etc/ldap/slapd.d/ on upgrade
    asking the end user to enter a new password to control the access to the
    cn=config tree.
* debian/patches/corrupt-contextCSN: The contextCSN can get corrupted at
  times. (ITS: #5947)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* alock.c - access lock library */
2
 
/* $OpenLDAP: pkg/ldap/servers/slapd/alock.c,v 1.5.2.7 2008/02/11 23:26:43 kurt Exp $ */
 
2
/* $OpenLDAP: pkg/ldap/servers/slapd/alock.c,v 1.5.2.10 2009/01/22 00:00:59 kurt Exp $ */
3
3
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4
4
 *
5
 
 * Copyright 2005-2008 The OpenLDAP Foundation.
 
5
 * Copyright 2005-2009 The OpenLDAP Foundation.
6
6
 * Portions Copyright 2004-2005 Symas Corporation.
7
7
 * All rights reserved.
8
8
 *
24
24
#if SLAPD_BDB || SLAPD_HDB
25
25
 
26
26
#include "alock.h"
 
27
#include "lutil.h"
27
28
 
28
29
#include <ac/stdlib.h>
29
30
#include <ac/string.h>
177
178
        assert (bufptr != NULL);
178
179
 
179
180
        bufptr += sizeof (unsigned long int);
180
 
        for (count=0; count <= sizeof (unsigned long int); ++count) {
 
181
        for (count=0; count <= (int) sizeof (unsigned long int); ++count) {
181
182
                val <<= 8;
182
183
                val += (unsigned long int) *bufptr--;
183
184
        }
239
240
 
240
241
        if (slot_data->al_appname) free (slot_data->al_appname);
241
242
        slot_data->al_appname = calloc (1, ALOCK_MAX_APPNAME);
 
243
        if (slot_data->al_appname == NULL) {
 
244
                return -1;
 
245
        }
242
246
        strncpy (slot_data->al_appname, (char *)slotbuf+32, ALOCK_MAX_APPNAME-1);
243
247
        (slot_data->al_appname) [ALOCK_MAX_APPNAME-1] = '\0';
244
248
 
335
339
        char * filename;
336
340
        int res, max_slot;
337
341
        int dirty_count, live_count, nosave;
 
342
        char *ptr;
338
343
 
339
344
        assert (info != NULL);
340
345
        assert (appname != NULL);
345
350
        slot_data.al_stamp = time(NULL);
346
351
        slot_data.al_pid = getpid();
347
352
        slot_data.al_appname = calloc (1, ALOCK_MAX_APPNAME);
 
353
        if (slot_data.al_appname == NULL) {
 
354
                return ALOCK_UNSTABLE;
 
355
        }
348
356
        strncpy (slot_data.al_appname, appname, ALOCK_MAX_APPNAME-1);
349
357
        slot_data.al_appname [ALOCK_MAX_APPNAME-1] = '\0';
350
358
 
351
359
        filename = calloc (1, strlen (envdir) + strlen ("/alock") + 1);
352
 
        strcpy (filename, envdir);
353
 
        strcat (filename, "/alock");
 
360
        if (filename == NULL ) {
 
361
                free (slot_data.al_appname);
 
362
                return ALOCK_UNSTABLE;
 
363
        }
 
364
        ptr = lutil_strcopy(filename, envdir);
 
365
        lutil_strcopy(ptr, "/alock");
354
366
        info->al_fd = open (filename, O_CREAT|O_RDWR, 0666);
355
367
        free (filename);
356
368
        if (info->al_fd < 0) {