Merge pull request #11 from msteinert/transaction
Transaction handler updates
This commit is contained in:
111
.clang-format
Normal file
111
.clang-format
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# clang-format configuration file. For more information, see:
|
||||||
|
#
|
||||||
|
# https://clang.llvm.org/docs/ClangFormat.html
|
||||||
|
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
|
||||||
|
#
|
||||||
|
---
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: false
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: None
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterEnum: false
|
||||||
|
AfterFunction: true
|
||||||
|
AfterNamespace: true
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
AfterExternBlock: false
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
IndentBraces: false
|
||||||
|
SplitEmptyFunction: true
|
||||||
|
SplitEmptyRecord: true
|
||||||
|
SplitEmptyNamespace: true
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Custom
|
||||||
|
BreakBeforeInheritanceComma: false
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
BreakConstructorInitializers: BeforeComma
|
||||||
|
BreakStringLiterals: false
|
||||||
|
ColumnLimit: 120
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 8
|
||||||
|
ContinuationIndentWidth: 8
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
FixNamespaceComments: false
|
||||||
|
IncludeBlocks: Regroup
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(allez)/'
|
||||||
|
Priority: 2
|
||||||
|
SortPriority: 2
|
||||||
|
CaseSensitive: true
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
SortPriority: 0
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentGotoLabels: false
|
||||||
|
IndentPPDirectives: None
|
||||||
|
IndentWidth: 8
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
ObjCBinPackProtocolList: Auto
|
||||||
|
ObjCBlockIndentWidth: 8
|
||||||
|
ObjCSpaceAfterProperty: true
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
|
||||||
|
# Taken from git's rules
|
||||||
|
PenaltyBreakAssignment: 10
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 30
|
||||||
|
PenaltyBreakComment: 10
|
||||||
|
PenaltyBreakFirstLessLess: 0
|
||||||
|
PenaltyBreakString: 10
|
||||||
|
PenaltyExcessCharacter: 2
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: false
|
||||||
|
SortIncludes: true
|
||||||
|
SortUsingDeclarations: false
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeParens: ControlStatementsExceptForEachMacros
|
||||||
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
TabWidth: 8
|
||||||
|
UseTab: Always
|
||||||
|
...
|
||||||
@@ -9,29 +9,23 @@
|
|||||||
#define PAM_CONST const
|
#define PAM_CONST const
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int cb_pam_conv(
|
int cb_pam_conv(int num_msg, PAM_CONST struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
|
||||||
int num_msg,
|
|
||||||
PAM_CONST struct pam_message **msg,
|
|
||||||
struct pam_response **resp,
|
|
||||||
void *appdata_ptr)
|
|
||||||
{
|
{
|
||||||
*resp = calloc(num_msg, sizeof **resp);
|
if (num_msg <= 0 || num_msg > PAM_MAX_NUM_MSG)
|
||||||
if (num_msg <= 0 || num_msg > PAM_MAX_NUM_MSG) {
|
|
||||||
return PAM_CONV_ERR;
|
return PAM_CONV_ERR;
|
||||||
}
|
|
||||||
if (!*resp) {
|
*resp = calloc(num_msg, sizeof **resp);
|
||||||
|
if (!*resp)
|
||||||
return PAM_BUF_ERR;
|
return PAM_BUF_ERR;
|
||||||
}
|
|
||||||
for (size_t i = 0; i < num_msg; ++i) {
|
for (size_t i = 0; i < num_msg; ++i) {
|
||||||
struct cbPAMConv_return result = cbPAMConv(
|
struct cbPAMConv_return result = cbPAMConv(msg[i]->msg_style, (char *)msg[i]->msg, (uintptr_t)appdata_ptr);
|
||||||
msg[i]->msg_style,
|
if (result.r1 != PAM_SUCCESS)
|
||||||
(char *)msg[i]->msg,
|
|
||||||
(uintptr_t)appdata_ptr);
|
|
||||||
if (result.r1 != PAM_SUCCESS) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
|
||||||
(*resp)[i].resp = result.r0;
|
(*resp)[i].resp = result.r0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PAM_SUCCESS;
|
return PAM_SUCCESS;
|
||||||
error:
|
error:
|
||||||
for (size_t i = 0; i < num_msg; ++i) {
|
for (size_t i = 0; i < num_msg; ++i) {
|
||||||
@@ -40,6 +34,7 @@ error:
|
|||||||
free((*resp)[i].resp);
|
free((*resp)[i].resp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(*resp, 0, num_msg * sizeof *resp);
|
memset(*resp, 0, num_msg * sizeof *resp);
|
||||||
free(*resp);
|
free(*resp);
|
||||||
*resp = NULL;
|
*resp = NULL;
|
||||||
@@ -52,11 +47,15 @@ void init_pam_conv(struct pam_conv *conv, uintptr_t appdata)
|
|||||||
conv->appdata_ptr = (void *)appdata;
|
conv->appdata_ptr = (void *)appdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
// pam_start_confdir is a recent PAM api to declare a confdir (mostly for tests)
|
// pam_start_confdir is a recent PAM api to declare a confdir (mostly for
|
||||||
// weaken the linking dependency to detect if it’s present.
|
// tests) weaken the linking dependency to detect if it’s present.
|
||||||
int pam_start_confdir(const char *service_name, const char *user, const struct pam_conv *pam_conversation, const char *confdir, pam_handle_t **pamh) __attribute__ ((weak));
|
int pam_start_confdir(const char *service_name, const char *user, const struct pam_conv *pam_conversation,
|
||||||
int check_pam_start_confdir(void) {
|
const char *confdir, pam_handle_t **pamh) __attribute__((weak));
|
||||||
|
|
||||||
|
int check_pam_start_confdir(void)
|
||||||
|
{
|
||||||
if (pam_start_confdir == NULL)
|
if (pam_start_confdir == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user