Changeset 133 for trunk/src/sh_unix.c


Ignore:
Timestamp:
Oct 25, 2007, 12:19:05 AM (12 years ago)
Author:
rainer
Message:

Reentrant checksum/hash functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_unix.c

    r132 r133  
    883883{
    884884  char message[512];
     885  char hashbuf[KEYBUF_SIZE];
    885886
    886887  SL_ENTER(_("sh_unix_self_hash"));
     
    894895
    895896  sl_strlcpy(sh.exec.hash,
    896              sh_tiger_hash (c, TIGER_FILE, 0),
     897             sh_tiger_hash (c, TIGER_FILE, 0, hashbuf, sizeof(hashbuf)),
    897898             KEY_LEN+1);
    898899  sl_snprintf(message, 512, _("%s has checksum: %s"),
     
    917918  char newhash[KEY_LEN+1];
    918919  char message[512];
     920  char hashbuf[KEYBUF_SIZE];
    919921
    920922  SL_ENTER(_("sh_unix_self_check"));
     
    922924    SL_RETURN((0), _("sh_unix_self_check"));
    923925
    924   sl_strlcpy(newhash, sh_tiger_hash (sh.exec.path, TIGER_FILE, 0), KEY_LEN+1);
     926  sl_strlcpy(newhash,
     927             sh_tiger_hash (sh.exec.path, TIGER_FILE, 0, hashbuf, sizeof(hashbuf)),
     928             KEY_LEN+1);
    925929  if (0 == sl_strncmp(sh.exec.hash,
    926930                      newhash,
     
    23572361}
    23582362
    2359 SH_MUTEX_STATIC(getUIDname, PTHREAD_MUTEX_INITIALIZER);
     2363SH_MUTEX_STATIC(mutex_getUIDname, PTHREAD_MUTEX_INITIALIZER);
    23602364
    23612365char *  sh_unix_getUIDname (int level, uid_t uid, char * out, size_t len)
     
    23752379  if ((uid == old_uid) && (name[0] != '\0')) {
    23762380    out[0] = '\0';
    2377     SH_MUTEX_LOCK_UNSAFE(getUIDname);
     2381    SH_MUTEX_LOCK_UNSAFE(mutex_getUIDname);
    23782382    if ((uid == old_uid) && (name[0] != '\0')) {
    23792383      sl_strlcpy(out, name, len);
    23802384    }
    2381     SH_MUTEX_UNLOCK_UNSAFE(getUIDname);
     2385    SH_MUTEX_UNLOCK_UNSAFE(mutex_getUIDname);
    23822386    if (out[0] != '\0')
    23832387      SL_RETURN( out, _("sh_unix_getUIDname"));
     
    24012405
    24022406  if (tempres->pw_name != NULL) {
    2403     SH_MUTEX_LOCK_UNSAFE(getUIDname);
     2407    SH_MUTEX_LOCK_UNSAFE(mutex_getUIDname);
    24042408    sl_strlcpy(name, tempres->pw_name, sizeof(name));
    24052409    old_uid = uid;
    24062410    sl_strlcpy(out, name, len);
    2407     SH_MUTEX_UNLOCK_UNSAFE(getUIDname);
     2411    SH_MUTEX_UNLOCK_UNSAFE(mutex_getUIDname);
    24082412    SL_RETURN( out, _("sh_unix_getUIDname"));
    24092413  } else {
     
    24152419}
    24162420
    2417 SH_MUTEX_STATIC(getGIDname, PTHREAD_MUTEX_INITIALIZER);
     2421SH_MUTEX_STATIC(mutex_getGIDname, PTHREAD_MUTEX_INITIALIZER);
    24182422
    24192423char *  sh_unix_getGIDname (int level, gid_t gid, char * out, size_t len)
     
    24342438  if ((gid == old_gid) && (name[0] != '\0')) {
    24352439    out[0] = '\0';
    2436     SH_MUTEX_LOCK_UNSAFE(getGIDname);
     2440    SH_MUTEX_LOCK_UNSAFE(mutex_getGIDname);
    24372441    if ((gid == old_gid) && (name[0] != '\0')) {
    24382442      sl_strlcpy(out, name, len);
    24392443    }
    2440     SH_MUTEX_UNLOCK_UNSAFE(getGIDname);
     2444    SH_MUTEX_UNLOCK_UNSAFE(mutex_getGIDname);
    24412445    if (out[0] != '\0')
    24422446      SL_RETURN( out, _("sh_unix_getGIDname"));
     
    24592463  }
    24602464
    2461   /* FIXME: need to return caller-supplied buffer */
    24622465  if (tempres->gr_name != NULL) {
    2463     SH_MUTEX_LOCK_UNSAFE(getGIDname);
     2466    SH_MUTEX_LOCK_UNSAFE(mutex_getGIDname);
    24642467    sl_strlcpy(name, tempres->gr_name, sizeof(name));
    24652468    old_gid = gid;
    24662469    sl_strlcpy(out, name, len);
    2467     SH_MUTEX_UNLOCK_UNSAFE(getGIDname);
     2470    SH_MUTEX_UNLOCK_UNSAFE(mutex_getGIDname);
    24682471    SL_RETURN( out, _("sh_unix_getGIDname"));
    24692472  } else {
     
    29932996
    29942997int sh_unix_checksum_size (char * filename, struct stat * fbuf,
    2995                            char * fileHash, int alert_timeout)
     2998                           char * fileHash, int alert_timeout, SL_TICKET fd)
    29962999{
    29973000  file_type tmpFile;
     
    30163019  if (tmpFile.size < fbuf->st_size)
    30173020    {
     3021      char hashbuf[KEYBUF_SIZE];
    30183022      sl_strlcpy(fileHash,
    3019                  sh_tiger_generic_hash (filename, TIGER_FD, tmpFile.size,
    3020                                         alert_timeout),
     3023                 sh_tiger_generic_hash (filename, fd, tmpFile.size,
     3024                                        alert_timeout, hashbuf, sizeof(hashbuf)),
    30213025                 KEY_LEN+1);
    30223026     
     
    33553359          else
    33563360            {
    3357               tiger_fd = rval_open;
     3361              char hashbuf[KEYBUF_SIZE];
    33583362              sl_strlcpy(fileHash,
    33593363                         sh_tiger_generic_hash (theFile->fullpath,
    3360                                                 TIGER_FD, TIGER_NOLIM,
    3361                                                 alert_timeout),
     3364                                                rval_open, TIGER_NOLIM,
     3365                                                alert_timeout,
     3366                                                hashbuf, sizeof(hashbuf)),
    33623367                         KEY_LEN+1);
    33633368              if ((theFile->check_mask & MODI_SGROW) != 0)
    33643369                {
    33653370                  sl_rewind(rval_open);
    3366                   tiger_fd = rval_open;
    33673371                  sh_unix_checksum_size (theFile->fullpath, &fbuf,
    33683372                                         &fileHash[KEY_LEN + 1],
    3369                                          alert_timeout);
     3373                                         alert_timeout, rval_open);
    33703374                }
    33713375            }
     
    33953399          else
    33963400            {
    3397               tiger_fd = rval_open;
     3401              char hashbuf[KEYBUF_SIZE];
    33983402              sl_strlcpy(fileHash,
    3399                          sh_tiger_generic_hash (theFile->fullpath, TIGER_FD, TIGER_NOLIM,
    3400                                                 alert_timeout),
     3403                         sh_tiger_generic_hash (theFile->fullpath, rval_open,
     3404                                                TIGER_NOLIM,
     3405                                                alert_timeout,
     3406                                                hashbuf, sizeof(hashbuf)),
    34013407                         KEY_LEN + 1);
    34023408              if ((theFile->check_mask & MODI_SGROW) != 0)
    34033409                {
    34043410                  sl_rewind(rval_open);
    3405                   tiger_fd = rval_open;
    34063411                  sh_unix_checksum_size (theFile->fullpath, &fbuf,
    34073412                                         &fileHash[KEY_LEN + 1],
    3408                                          alert_timeout);
     3413                                         alert_timeout, rval_open);
    34093414                }
    34103415            }
Note: See TracChangeset for help on using the changeset viewer.