contrib/chg/procutil.h
author Gregory Szorc <gregory.szorc@gmail.com>
Mon, 10 Jul 2017 21:09:46 -0700
changeset 33381 3bdbbadddecc
parent 31941 ac5527021097
permissions -rw-r--r--
sslutil: check for missing certificate and key files (issue5598) Currently, sslutil._hostsettings() performs validation that web.cacerts exists. However, client certificates are passed in to the function and not all callers may validate them. This includes httpconnection.readauthforuri(), which loads the [auth] section. If a missing file is specified, the ssl module will raise a generic IOException. And, it doesn't even give us the courtesy of telling us which file is missing! Mercurial then prints a generic "abort: No such file or directory" (or similar) error, leaving users to scratch their head as to what file is missing. This commit introduces explicit validation of all paths passed as arguments to wrapsocket() and wrapserversocket(). Any missing file is alerted about explicitly. We should probably catch missing files earlier - as part of loading the [auth] section. However, I think the sslutil functions should check for file presence regardless of what callers do because that's the only way to be sure that missing files are always detected.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30693
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     1
/*
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     2
 * Utilities about process handling - signal and subprocess (ex. pager)
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     3
 *
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     4
 * Copyright (c) 2011 Yuya Nishihara <yuya@tcha.org>
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     5
 *
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     6
 * This software may be used and distributed according to the terms of the
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     7
 * GNU General Public License version 2 or any later version.
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     8
 */
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
     9
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    10
#ifndef PROCUTIL_H_
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    11
#define PROCUTIL_H_
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    12
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    13
#include <unistd.h>
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    14
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    15
void restoresignalhandler(void);
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    16
void setupsignalhandler(pid_t pid, pid_t pgid);
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    17
31941
ac5527021097 chg: respect environment variables for pager
Jun Wu <quark@fb.com>
parents: 30693
diff changeset
    18
pid_t setuppager(const char *pagercmd, const char *envp[]);
30693
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    19
void waitpager(void);
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    20
baee0f47b533 chg: add procutil.h
Jun Wu <quark@fb.com>
parents:
diff changeset
    21
#endif /* PROCUTIL_H_ */