Date: Fri, 27 Jan 2012 18:34:19 +0100 From: =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@FreeBSD.org> To: Gleb Kurtsou <gleb.kurtsou@gmail.com>, freebsd-current@freebsd.org Cc: Pierre-Gilles Mialon <pierre-gilles@yakaz.com>, Romain Vrignaud <romain@yakaz.com> Subject: Re: [patch] pam_exec: use program exit code instead of PAM_SYSTEM_ERR Message-ID: <4F22E01B.3010204@FreeBSD.org> In-Reply-To: <20120126100745.GA62071@reks> References: <4F1EBF42.4050307@FreeBSD.org> <20120126100745.GA62071@reks>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------020208080603040400090703 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 26.01.2012 11:07, Gleb Kurtsou wrote: > On (24/01/2012 15:25), Jean-Sébastien Pédron wrote: >> Attached is a patch that changes the behaviour to always return >> the program exit code as-is. > > Please consider making it optional. It will break for generic > applications because pam_sm_chauthtok error codes are documented > and standardized. You're right, thanks. I attached a new patch with the following changes: o Instead of making it optionnal, I preferred to check the exit code for each pam_sm_* functions supported. Here are the rules: - If the code is allowed, it's returned as is. - If the exit code is 1 (not an allowed PAM code here), PAM_PERM_DENIED is returned. I added this because 1 is a common exit code for errors. - For any other codes, a message is logged about this invalid value and PAM_SERVICE_ERR is returned. o I changed return code from PAM_SYSTEM_ERR to PAM_SERVICE_ERR for the WIFSIGNALED(status) and !WIFEXITED(status) cases. PAM_SYSTEM_ERR is still returned if a syscall fails. o A new environment variable is set before calling the program: PAM_SM_FUNC. It contains the name of the pam_sm_* function. The program can use it to determine which exit codes are allowed. o The pam_sm_* function name is also added to messages logged from _pam_exec(). o waitpid() is now called in a loop. If it returned because of EINTR, do it again. Before, it would return PAM_SYSTEM_ERR without waiting for the child to exit. I expanded the man page with these informations. Again, thanks for your comments! If you have more, they're welcome :) - -- Jean-Sébastien Pédron -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk8i4BsACgkQa+xGJsFYOlN/EQCg0D3uHsJC2y9jO/Sk9LHTg/xf POcAnjUUjLwWd035bHqg4o4Ry/htfEkJ =l4+1 -----END PGP SIGNATURE----- --------------020208080603040400090703 Content-Type: text/plain; name="pam_exec-return-exit-code-e.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pam_exec-return-exit-code-e.patch" ZGlmZiAtLWdpdCBhL2xpYi9saWJwYW0vbW9kdWxlcy9wYW1fZXhlYy9wYW1fZXhlYy44IGIv bGliL2xpYnBhbS9tb2R1bGVzL3BhbV9leGVjL3BhbV9leGVjLjgKaW5kZXggMzExZDY0Yy4u OTI5N2IxZTAgMTAwNjQ0Ci0tLSBhL2xpYi9saWJwYW0vbW9kdWxlcy9wYW1fZXhlYy9wYW1f ZXhlYy44CisrKyBiL2xpYi9saWJwYW0vbW9kdWxlcy9wYW1fZXhlYy9wYW1fZXhlYy44CkBA IC0zMiw3ICszMiw3IEBACiAuXCIKIC5cIiAkRnJlZUJTRCQKIC5cIgotLkRkIEZlYnJ1YXJ5 IDEsIDIwMDUKKy5EZCBKYW51YXJ5IDI3LCAyMDEyCiAuRHQgUEFNX0VYRUMgOAogLk9zCiAu U2ggTkFNRQpAQCAtNTYsMTMgKzU2LDUxIEBAIHZhcmlhYmxlczoKIC5FdiBQQU1fUkhPU1Qg LAogLkV2IFBBTV9SVVNFUiAsCiAuRXYgUEFNX1NFUlZJQ0UgLAotLkV2IFBBTV9UVFkgLAor LkV2IFBBTV9TTV9GVU5DICwKKy5FdiBQQU1fVFRZCiBhbmQKIC5FdiBQQU1fVVNFUiAuCisu UHAKK1RoZQorLkV2IFBBTV9TTV9GVU5DCit2YXJpYWJsZSBjb250YWlucyB0aGUgbmFtZSBv ZiB0aGUgUEFNIHNlcnZpY2UgbW9kdWxlIGZ1bmN0aW9uIGJlaW5nCitjYWxsZWQuIEl0IG1h eSBiZToKKy5CbCAtYnVsbGV0IC1vZmZzZXQgaW5kZW50IC1jb21wYWN0CisuSXQKK3BhbV9z bV9hY2N0X21nbXQKKy5JdAorcGFtX3NtX2F1dGhlbnRpY2F0ZQorLkl0CitwYW1fc21fY2hh dXRodG9rCisuSXQKK3BhbV9zbV9jbG9zZV9zZXNzaW9uCisuSXQKK3BhbV9zbV9vcGVuX3Nl c3Npb24KKy5JdAorcGFtX3NtX3NldGNyZWQKKy5FbAorLlBwCitUaGUgcHJvZ3JhbSBleGl0 IGNvZGUgc2hvdWxkIGJlCisuRXIgUEFNX1NVQ0NFU1MKK29yIG9uZSBvZiB0aGUgZXJyb3Ig Y29kZXMgYWxsb3dlZCBieSB0aGUgY2FsbGluZworLkV2IFBBTV9TTV9GVU5DCitmdW5jdGlv bi4KK1RoZSB2YWxpZCBjb2RlcyBhcmUgZG9jdW1lbnRlZCBpbiBlYWNoIGZ1bmN0aW9uIG1h biBwYWdlIGFuZCB0aGVpcgorbnVtZXJpY2FsIHZhbHVlIGlzIGRlZmluZWQgaW4KKy5QYSAv dXNyL2luY2x1ZGUvc2VjdXJpdHkvcGFtX2NvbnN0YW50cy5oCit1bmRlciBzZWN0aW9uICJY U1NPIDUuMiIuIEF1dGhlbnRpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwgaWYgdGhlIHJldHVybiBj b2RlIGlzCisuRXIgUEFNX1NVQ0NFU1MKKygwKSwgZmFpbGVkIG90aGVyd2lzZS4KIC5TaCBT RUUgQUxTTwogLlhyIHBhbV9nZXRfaXRlbSAzICwKIC5YciBwYW0uY29uZiA1ICwKLS5YciBw YW0gOAorLlhyIHBhbSA4ICwKKy5YciBwYW1fc21fYWNjdF9tZ210IDggLAorLlhyIHBhbV9z bV9hdXRoZW50aWNhdGUgOCAsCisuWHIgcGFtX3NtX2NoYXV0aHRvayA4LAorLlhyIHBhbV9z bV9jbG9zZV9zZXNzaW9uIDggLAorLlhyIHBhbV9zbV9vcGVuX3Nlc3Npb24gOCAsCisuWHIg cGFtX3NtX3NldGNyZWQgOCAuCiAuU2ggQVVUSE9SUwogVGhlCiAuTm0KZGlmZiAtLWdpdCBh L2xpYi9saWJwYW0vbW9kdWxlcy9wYW1fZXhlYy9wYW1fZXhlYy5jIGIvbGliL2xpYnBhbS9t b2R1bGVzL3BhbV9leGVjL3BhbV9leGVjLmMKaW5kZXggYjdhODcwZi4uNzg2MzE5ZSAxMDA2 NDQKLS0tIGEvbGliL2xpYnBhbS9tb2R1bGVzL3BhbV9leGVjL3BhbV9leGVjLmMKKysrIGIv bGliL2xpYnBhbS9tb2R1bGVzL3BhbV9leGVjL3BhbV9leGVjLmMKQEAgLTYyLDEwICs2Miwx MCBAQCBzdGF0aWMgc3RydWN0IHsKIAogc3RhdGljIGludAogX3BhbV9leGVjKHBhbV9oYW5k bGVfdCAqcGFtaCBfX3VudXNlZCwgaW50IGZsYWdzIF9fdW51c2VkLAotICAgIGludCBhcmdj LCBjb25zdCBjaGFyICphcmd2W10pCisgICAgY29uc3QgY2hhciAqZnVuYywgaW50IGFyZ2Ms IGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKIAlpbnQgZW52bGVuLCBpLCBuaXRlbXMsIHBhbV9l cnIsIHN0YXR1czsKLQljaGFyICplbnYsICoqZW52bGlzdCwgKip0bXA7CisJY2hhciAqZW52 LCAqKmVudmxpc3QsICoqdG1wLCAqZW52c3RyOwogCXZvbGF0aWxlIGludCBjaGlsZGVycjsK IAlwaWRfdCBwaWQ7CiAKQEAgLTc5LDEzICs3OSwxNCBAQCBfcGFtX2V4ZWMocGFtX2hhbmRs ZV90ICpwYW1oIF9fdW51c2VkLCBpbnQgZmxhZ3MgX191bnVzZWQsCiAKIAkvKgogCSAqIFNl dCB1cCB0aGUgY2hpbGQncyBlbnZpcm9ubWVudCBsaXN0LiAgSXQgY29uc2lzdHMgb2YgdGhl IFBBTQotCSAqIGVudmlyb25tZW50LCBwbHVzIGEgZmV3IGhhbmQtcGlja2VkIFBBTSBpdGVt cy4KKwkgKiBlbnZpcm9ubWVudCwgcGx1cyBhIGZldyBoYW5kLXBpY2tlZCBQQU0gaXRlbXMg YW5kIHRoZSBwYW1fc21fCisJICogZnVuY3Rpb24gbmFtZSBjYWxsaW5nIGl0LgogCSAqLwog CWVudmxpc3QgPSBwYW1fZ2V0ZW52bGlzdChwYW1oKTsKIAlmb3IgKGVudmxlbiA9IDA7IGVu dmxpc3RbZW52bGVuXSAhPSBOVUxMOyArK2VudmxlbikKIAkJLyogbm90aGluZyAqLyA7CiAJ bml0ZW1zID0gc2l6ZW9mKGVudl9pdGVtcykgLyBzaXplb2YoKmVudl9pdGVtcyk7Ci0JdG1w ID0gcmVhbGxvYyhlbnZsaXN0LCAoZW52bGVuICsgbml0ZW1zICsgMSkgKiBzaXplb2YoKmVu dmxpc3QpKTsKKwl0bXAgPSByZWFsbG9jKGVudmxpc3QsIChlbnZsZW4gKyBuaXRlbXMgKyAx ICsgMSkgKiBzaXplb2YoKmVudmxpc3QpKTsKIAlpZiAodG1wID09IE5VTEwpIHsKIAkJb3Bl bnBhbV9mcmVlX2Vudmxpc3QoZW52bGlzdCk7CiAJCXJldHVybiAoUEFNX0JVRl9FUlIpOwpA QCAtOTMsNyArOTQsNiBAQCBfcGFtX2V4ZWMocGFtX2hhbmRsZV90ICpwYW1oIF9fdW51c2Vk LCBpbnQgZmxhZ3MgX191bnVzZWQsCiAJZW52bGlzdCA9IHRtcDsKIAlmb3IgKGkgPSAwOyBp IDwgbml0ZW1zOyArK2kpIHsKIAkJY29uc3Qgdm9pZCAqaXRlbTsKLQkJY2hhciAqZW52c3Ry OwogCiAJCXBhbV9lcnIgPSBwYW1fZ2V0X2l0ZW0ocGFtaCwgZW52X2l0ZW1zW2ldLml0ZW0s ICZpdGVtKTsKIAkJaWYgKHBhbV9lcnIgIT0gUEFNX1NVQ0NFU1MgfHwgaXRlbSA9PSBOVUxM KQpAQCAtMTA3LDYgKzEwNywxNSBAQCBfcGFtX2V4ZWMocGFtX2hhbmRsZV90ICpwYW1oIF9f dW51c2VkLCBpbnQgZmxhZ3MgX191bnVzZWQsCiAJCWVudmxpc3RbZW52bGVuXSA9IE5VTEw7 CiAJfQogCisJLyogQWRkIHRoZSBwYW1fc21fIGZ1bmN0aW9uIG5hbWUgdG8gdGhlIGVudmly b25tZW50LiAqLworCWFzcHJpbnRmKCZlbnZzdHIsICIlcz0lcyIsICJQQU1fU01fRlVOQyIs IGZ1bmMpOworCWlmIChlbnZzdHIgPT0gTlVMTCkgeworCQlvcGVucGFtX2ZyZWVfZW52bGlz dChlbnZsaXN0KTsKKwkJcmV0dXJuIChQQU1fQlVGX0VSUik7CisJfQorCWVudmxpc3RbZW52 bGVuKytdID0gZW52c3RyOworCWVudmxpc3RbZW52bGVuXSA9IE5VTEw7CisKIAkvKgogCSAq IEZvcmsgYW5kIHJ1biB0aGUgY29tbWFuZC4gIEJ5IHVzaW5nIHZmb3JrKCkgaW5zdGVhZCBv ZiBmb3JrKCksCiAJICogd2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gZXhlY3ZlKCkg ZmFpbHVyZSBhbmQgYSBub24temVybwpAQCAtMTIwLDgxICsxMjksMjU5IEBAIF9wYW1fZXhl YyhwYW1faGFuZGxlX3QgKnBhbWggX191bnVzZWQsIGludCBmbGFncyBfX3VudXNlZCwKIAl9 CiAJb3BlbnBhbV9mcmVlX2Vudmxpc3QoZW52bGlzdCk7CiAJaWYgKHBpZCA9PSAtMSkgewot CQlvcGVucGFtX2xvZyhQQU1fTE9HX0VSUk9SLCAidmZvcmsoKTogJW0iKTsKKwkJb3BlbnBh bV9sb2coUEFNX0xPR19FUlJPUiwgIiVzOiB2Zm9yaygpOiAlbSIsIGZ1bmMpOwogCQlyZXR1 cm4gKFBBTV9TWVNURU1fRVJSKTsKIAl9Ci0JaWYgKHdhaXRwaWQocGlkLCAmc3RhdHVzLCAw KSA9PSAtMSkgewotCQlvcGVucGFtX2xvZyhQQU1fTE9HX0VSUk9SLCAid2FpdHBpZCgpOiAl bSIpOwotCQlyZXR1cm4gKFBBTV9TWVNURU1fRVJSKTsKKwl3aGlsZSAoMSkgeworCQlpZiAo d2FpdHBpZChwaWQsICZzdGF0dXMsIDApID09IC0xKSB7CisJCQlpZiAoZXJybm8gPT0gRUlO VFIpCisJCQkJY29udGludWU7CisJCQlvcGVucGFtX2xvZyhQQU1fTE9HX0VSUk9SLCAiJXM6 IHdhaXRwaWQoKTogJW0iLCBmdW5jKTsKKwkJCXJldHVybiAoUEFNX1NZU1RFTV9FUlIpOwor CQl9CisKKwkJYnJlYWs7CiAJfQogCWlmIChjaGlsZGVyciAhPSAwKSB7Ci0JCW9wZW5wYW1f bG9nKFBBTV9MT0dfRVJST1IsICJleGVjdmUoKTogJW0iKTsKKwkJb3BlbnBhbV9sb2coUEFN X0xPR19FUlJPUiwgIiVzOiBleGVjdmUoKTogJW0iLCBmdW5jKTsKIAkJcmV0dXJuIChQQU1f U1lTVEVNX0VSUik7CiAJfQogCWlmIChXSUZTSUdOQUxFRChzdGF0dXMpKSB7Ci0JCW9wZW5w YW1fbG9nKFBBTV9MT0dfRVJST1IsICIlcyBjYXVnaHQgc2lnbmFsICVkJXMiLAotCQkgICAg YXJndlswXSwgV1RFUk1TSUcoc3RhdHVzKSwKKwkJb3BlbnBhbV9sb2coUEFNX0xPR19FUlJP UiwgIiVzOiAlcyBjYXVnaHQgc2lnbmFsICVkJXMiLAorCQkgICAgZnVuYywgYXJndlswXSwg V1RFUk1TSUcoc3RhdHVzKSwKIAkJICAgIFdDT1JFRFVNUChzdGF0dXMpID8gIiAoY29yZSBk dW1wZWQpIiA6ICIiKTsKLQkJcmV0dXJuIChQQU1fU1lTVEVNX0VSUik7CisJCXJldHVybiAo UEFNX1NFUlZJQ0VfRVJSKTsKIAl9CiAJaWYgKCFXSUZFWElURUQoc3RhdHVzKSkgewotCQlv cGVucGFtX2xvZyhQQU1fTE9HX0VSUk9SLCAidW5rbm93biBzdGF0dXMgMHgleCIsIHN0YXR1 cyk7Ci0JCXJldHVybiAoUEFNX1NZU1RFTV9FUlIpOwotCX0KLQlpZiAoV0VYSVRTVEFUVVMo c3RhdHVzKSAhPSAwKSB7Ci0JCW9wZW5wYW1fbG9nKFBBTV9MT0dfRVJST1IsICIlcyByZXR1 cm5lZCBjb2RlICVkIiwKLQkJICAgIGFyZ3ZbMF0sIFdFWElUU1RBVFVTKHN0YXR1cykpOwot CQlyZXR1cm4gKFBBTV9TWVNURU1fRVJSKTsKKwkJb3BlbnBhbV9sb2coUEFNX0xPR19FUlJP UiwgIiVzOiB1bmtub3duIHN0YXR1cyAweCV4IiwKKwkJICAgIGZ1bmMsIHN0YXR1cyk7CisJ CXJldHVybiAoUEFNX1NFUlZJQ0VfRVJSKTsKIAl9Ci0JcmV0dXJuIChQQU1fU1VDQ0VTUyk7 CisJcmV0dXJuIChXRVhJVFNUQVRVUyhzdGF0dXMpKTsKIH0KIAogUEFNX0VYVEVSTiBpbnQK IHBhbV9zbV9hdXRoZW50aWNhdGUocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsCiAg ICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKKwlpbnQgcmV0OwogCi0JcmV0 dXJuIChfcGFtX2V4ZWMocGFtaCwgZmxhZ3MsIGFyZ2MsIGFyZ3YpKTsKKwlyZXQgPSBfcGFt X2V4ZWMocGFtaCwgZmxhZ3MsIF9fZnVuY19fLCBhcmdjLCBhcmd2KTsKKworCS8qCisJICog V2UgbXVzdCBjaGVjayB0aGF0IHRoZSBwcm9ncmFtIHJldHVybmVkIGEgdmFsaWQgY29kZSBm b3IgdGhpcworCSAqIGZ1bmN0aW9uLgorCSAqLworCXN3aXRjaCAocmV0KSB7CisJY2FzZSBQ QU1fU1VDQ0VTUzoKKwljYXNlIFBBTV9BQk9SVDoKKwljYXNlIFBBTV9BVVRISU5GT19VTkFW QUlMOgorCWNhc2UgUEFNX0FVVEhfRVJSOgorCWNhc2UgUEFNX0JVRl9FUlI6CisJY2FzZSBQ QU1fQ09OVl9FUlI6CisJY2FzZSBQQU1fQ1JFRF9JTlNVRkZJQ0lFTlQ6CisJY2FzZSBQQU1f SUdOT1JFOgorCWNhc2UgUEFNX01BWFRSSUVTOgorCWNhc2UgUEFNX1BFUk1fREVOSUVEOgor CWNhc2UgUEFNX1NFUlZJQ0VfRVJSOgorCWNhc2UgUEFNX1NZU1RFTV9FUlI6CisJY2FzZSBQ QU1fVVNFUl9VTktOT1dOOgorCQlicmVhazsKKwljYXNlIDE6CisJCXJldCA9IFBBTV9QRVJN X0RFTklFRDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJb3BlbnBhbV9sb2coUEFNX0xPR19F UlJPUiwgIiVzIHJldHVybmVkIGludmFsaWQgY29kZSAlZCIsCisJCSAgICBhcmd2WzBdLCBy ZXQpOworCQlyZXQgPSBQQU1fU0VSVklDRV9FUlI7CisJfQorCisJcmV0dXJuIChyZXQpOwog fQogCiBQQU1fRVhURVJOIGludAogcGFtX3NtX3NldGNyZWQocGFtX2hhbmRsZV90ICpwYW1o LCBpbnQgZmxhZ3MsCiAgICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKKwlp bnQgcmV0OworCisJcmV0ID0gX3BhbV9leGVjKHBhbWgsIGZsYWdzLCBfX2Z1bmNfXywgYXJn YywgYXJndik7CisKKwkvKgorCSAqIFdlIG11c3QgY2hlY2sgdGhhdCB0aGUgcHJvZ3JhbSBy ZXR1cm5lZCBhIHZhbGlkIGNvZGUgZm9yIHRoaXMKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlz d2l0Y2ggKHJldCkgeworCWNhc2UgUEFNX1NVQ0NFU1M6CisJY2FzZSBQQU1fQUJPUlQ6CisJ Y2FzZSBQQU1fQlVGX0VSUjoKKwljYXNlIFBBTV9DT05WX0VSUjoKKwljYXNlIFBBTV9DUkVE X0VSUjoKKwljYXNlIFBBTV9DUkVEX0VYUElSRUQ6CisJY2FzZSBQQU1fQ1JFRF9VTkFWQUlM OgorCWNhc2UgUEFNX0lHTk9SRToKKwljYXNlIFBBTV9QRVJNX0RFTklFRDoKKwljYXNlIFBB TV9TRVJWSUNFX0VSUjoKKwljYXNlIFBBTV9TWVNURU1fRVJSOgorCWNhc2UgUEFNX1VTRVJf VU5LTk9XTjoKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlyZXQgPSBQQU1fUEVSTV9ERU5JRUQ7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCW9wZW5wYW1fbG9nKFBBTV9MT0dfRVJST1IsICIl cyByZXR1cm5lZCBpbnZhbGlkIGNvZGUgJWQiLAorCQkgICAgYXJndlswXSwgcmV0KTsKKwkJ cmV0ID0gUEFNX1NFUlZJQ0VfRVJSOworCX0KIAotCXJldHVybiAoX3BhbV9leGVjKHBhbWgs IGZsYWdzLCBhcmdjLCBhcmd2KSk7CisJcmV0dXJuIChyZXQpOwogfQogCiBQQU1fRVhURVJO IGludAogcGFtX3NtX2FjY3RfbWdtdChwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywK ICAgICBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogeworCWludCByZXQ7CisKKwly ZXQgPSBfcGFtX2V4ZWMocGFtaCwgZmxhZ3MsIF9fZnVuY19fLCBhcmdjLCBhcmd2KTsKIAot CXJldHVybiAoX3BhbV9leGVjKHBhbWgsIGZsYWdzLCBhcmdjLCBhcmd2KSk7CisJLyoKKwkg KiBXZSBtdXN0IGNoZWNrIHRoYXQgdGhlIHByb2dyYW0gcmV0dXJuZWQgYSB2YWxpZCBjb2Rl IGZvciB0aGlzCisJICogZnVuY3Rpb24uCisJICovCisJc3dpdGNoIChyZXQpIHsKKwljYXNl IFBBTV9TVUNDRVNTOgorCWNhc2UgUEFNX0FCT1JUOgorCWNhc2UgUEFNX0FDQ1RfRVhQSVJF RDoKKwljYXNlIFBBTV9BVVRIX0VSUjoKKwljYXNlIFBBTV9CVUZfRVJSOgorCWNhc2UgUEFN X0NPTlZfRVJSOgorCWNhc2UgUEFNX0lHTk9SRToKKwljYXNlIFBBTV9ORVdfQVVUSFRPS19S RVFEOgorCWNhc2UgUEFNX1BFUk1fREVOSUVEOgorCWNhc2UgUEFNX1NFUlZJQ0VfRVJSOgor CWNhc2UgUEFNX1NZU1RFTV9FUlI6CisJY2FzZSBQQU1fVVNFUl9VTktOT1dOOgorCQlicmVh azsKKwljYXNlIDE6CisJCXJldCA9IFBBTV9QRVJNX0RFTklFRDsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJb3BlbnBhbV9sb2coUEFNX0xPR19FUlJPUiwgIiVzIHJldHVybmVkIGludmFs aWQgY29kZSAlZCIsCisJCSAgICBhcmd2WzBdLCByZXQpOworCQlyZXQgPSBQQU1fU0VSVklD RV9FUlI7CisJfQorCisJcmV0dXJuIChyZXQpOwogfQogCiBQQU1fRVhURVJOIGludAogcGFt X3NtX29wZW5fc2Vzc2lvbihwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywKICAgICBp bnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogeworCWludCByZXQ7CisKKwlyZXQgPSBf cGFtX2V4ZWMocGFtaCwgZmxhZ3MsIF9fZnVuY19fLCBhcmdjLCBhcmd2KTsKKworCS8qCisJ ICogV2UgbXVzdCBjaGVjayB0aGF0IHRoZSBwcm9ncmFtIHJldHVybmVkIGEgdmFsaWQgY29k ZSBmb3IgdGhpcworCSAqIGZ1bmN0aW9uLgorCSAqLworCXN3aXRjaCAocmV0KSB7CisJY2Fz ZSBQQU1fU1VDQ0VTUzoKKwljYXNlIFBBTV9BQk9SVDoKKwljYXNlIFBBTV9CVUZfRVJSOgor CWNhc2UgUEFNX0NPTlZfRVJSOgorCWNhc2UgUEFNX0lHTk9SRToKKwljYXNlIFBBTV9QRVJN X0RFTklFRDoKKwljYXNlIFBBTV9TRVJWSUNFX0VSUjoKKwljYXNlIFBBTV9TRVNTSU9OX0VS UjoKKwljYXNlIFBBTV9TWVNURU1fRVJSOgorCQlicmVhazsKKwljYXNlIDE6CisJCXJldCA9 IFBBTV9QRVJNX0RFTklFRDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJb3BlbnBhbV9sb2co UEFNX0xPR19FUlJPUiwgIiVzIHJldHVybmVkIGludmFsaWQgY29kZSAlZCIsCisJCSAgICBh cmd2WzBdLCByZXQpOworCQlyZXQgPSBQQU1fU0VSVklDRV9FUlI7CisJfQogCi0JcmV0dXJu IChfcGFtX2V4ZWMocGFtaCwgZmxhZ3MsIGFyZ2MsIGFyZ3YpKTsKKwlyZXR1cm4gKHJldCk7 CiB9CiAKIFBBTV9FWFRFUk4gaW50CiBwYW1fc21fY2xvc2Vfc2Vzc2lvbihwYW1faGFuZGxl X3QgKnBhbWgsIGludCBmbGFncywKICAgICBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltd KQogeworCWludCByZXQ7CisKKwlyZXQgPSBfcGFtX2V4ZWMocGFtaCwgZmxhZ3MsIF9fZnVu Y19fLCBhcmdjLCBhcmd2KTsKKworCS8qCisJICogV2UgbXVzdCBjaGVjayB0aGF0IHRoZSBw cm9ncmFtIHJldHVybmVkIGEgdmFsaWQgY29kZSBmb3IgdGhpcworCSAqIGZ1bmN0aW9uLgor CSAqLworCXN3aXRjaCAocmV0KSB7CisJY2FzZSBQQU1fU1VDQ0VTUzoKKwljYXNlIFBBTV9B Qk9SVDoKKwljYXNlIFBBTV9CVUZfRVJSOgorCWNhc2UgUEFNX0NPTlZfRVJSOgorCWNhc2Ug UEFNX0lHTk9SRToKKwljYXNlIFBBTV9QRVJNX0RFTklFRDoKKwljYXNlIFBBTV9TRVJWSUNF X0VSUjoKKwljYXNlIFBBTV9TRVNTSU9OX0VSUjoKKwljYXNlIFBBTV9TWVNURU1fRVJSOgor CQlicmVhazsKKwljYXNlIDE6CisJCXJldCA9IFBBTV9QRVJNX0RFTklFRDsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJb3BlbnBhbV9sb2coUEFNX0xPR19FUlJPUiwgIiVzIHJldHVybmVk IGludmFsaWQgY29kZSAlZCIsCisJCSAgICBhcmd2WzBdLCByZXQpOworCQlyZXQgPSBQQU1f U0VSVklDRV9FUlI7CisJfQogCi0JcmV0dXJuIChfcGFtX2V4ZWMocGFtaCwgZmxhZ3MsIGFy Z2MsIGFyZ3YpKTsKKwlyZXR1cm4gKHJldCk7CiB9CiAKIFBBTV9FWFRFUk4gaW50CiBwYW1f c21fY2hhdXRodG9rKHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLAogICAgIGludCBh cmdjLCBjb25zdCBjaGFyICphcmd2W10pCiB7CisJaW50IHJldDsKKworCXJldCA9IF9wYW1f ZXhlYyhwYW1oLCBmbGFncywgX19mdW5jX18sIGFyZ2MsIGFyZ3YpOworCisJLyoKKwkgKiBX ZSBtdXN0IGNoZWNrIHRoYXQgdGhlIHByb2dyYW0gcmV0dXJuZWQgYSB2YWxpZCBjb2RlIGZv ciB0aGlzCisJICogZnVuY3Rpb24uCisJICovCisJc3dpdGNoIChyZXQpIHsKKwljYXNlIFBB TV9TVUNDRVNTOgorCWNhc2UgUEFNX0FCT1JUOgorCWNhc2UgUEFNX0FVVEhUT0tfRElTQUJM RV9BR0lORzoKKwljYXNlIFBBTV9BVVRIVE9LX0VSUjoKKwljYXNlIFBBTV9BVVRIVE9LX0xP Q0tfQlVTWToKKwljYXNlIFBBTV9BVVRIVE9LX1JFQ09WRVJZX0VSUjoKKwljYXNlIFBBTV9C VUZfRVJSOgorCWNhc2UgUEFNX0NPTlZfRVJSOgorCWNhc2UgUEFNX0lHTk9SRToKKwljYXNl IFBBTV9QRVJNX0RFTklFRDoKKwljYXNlIFBBTV9TRVJWSUNFX0VSUjoKKwljYXNlIFBBTV9T WVNURU1fRVJSOgorCWNhc2UgUEFNX1RSWV9BR0FJTjoKKwkJYnJlYWs7CisJY2FzZSAxOgor CQlyZXQgPSBQQU1fUEVSTV9ERU5JRUQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCW9wZW5w YW1fbG9nKFBBTV9MT0dfRVJST1IsICIlcyByZXR1cm5lZCBpbnZhbGlkIGNvZGUgJWQiLAor CQkgICAgYXJndlswXSwgcmV0KTsKKwkJcmV0ID0gUEFNX1NFUlZJQ0VfRVJSOworCX0KIAot CXJldHVybiAoX3BhbV9leGVjKHBhbWgsIGZsYWdzLCBhcmdjLCBhcmd2KSk7CisJcmV0dXJu IChyZXQpOwogfQogCiBQQU1fTU9EVUxFX0VOVFJZKCJwYW1fZXhlYyIpOwo= --------------020208080603040400090703--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F22E01B.3010204>