Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >运行PAM函数时出现分段故障

运行PAM函数时出现分段故障
EN

Stack Overflow用户
提问于 2020-02-19 15:20:04
回答 1查看 66关注 0票数 0

我对C语言比较陌生,不明白为什么这个程序seg会出错。这可能是我犯的一个愚蠢的错误,但似乎找不到答案。

我也知道使用我的嵌入方法是不寻常的,但这是因为我完全熟悉Python3和易用性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define PY_SSIZE_T_CLEAN
#define PAM_SM_AUTH
#define PAM_SM_ACCOUNT
//#define PAM_SM_SESSION

#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <security/pam_appl.h>
#include <security/pam_modules.h>
#include </usr/include/python3.6m/Python.h>

/* expected hook */
/*
PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
    return PAM_SUCCESS;
}

PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
    printf("Acct mgmt\n");
    return PAM_SUCCESS;
}
*/

/* expected hook, this is where custom stuff happens */
PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv )

{
    chdir("../code/facial"); // this changes it to the correct directory to execute

    dlopen("/usr/lib/x86_64-linux-gnu/libpython3.6m.so",RTLD_LAZY | RTLD_GLOBAL);
    Py_Initialize(); // Starts python interpreter
    PyRun_SimpleString("import os\nimport sys\nsys.path.append(os.getcwd())"); // lets python know where we are


    PyObject *mymod, *func1, *ret1;


    mymod = PyImport_ImportModule("pam_detect"); // This is the .py

    if (mymod != 0){ // check if the file file was loaded
        func1 =  PyObject_GetAttrString(mymod, "detect"); // hel is the function name in the file you declared earlier
        ret1 = PyObject_CallObject(func1, NULL); // Null because the function doesnt take an argument.
        if (ret1 == 1){
            Py_Finalize();
            return PAM_SUCCESS;
        }
        else{
            Py_Finalize();
            return PAM_AUTH_ERR;

        }

    }

    else{
            //printf("Error: can't find file!\n");
            return 1;
    }

    Py_Finalize();

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 15:31:25

您已经定义了指针,但尚未将它们分配给内存地址。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PyObject *mymod, *func1, *ret1;

代码中的这一行创建了一个名为mymod的指针,该指针可以指向包含PyObject的内存,但是您还没有给它提供内存地址。

我不知道调用函数是否会正确返回指针,所以当你试图把任何东西放在那里时,如果你试图将一个变量赋给一个没有内存地址的指针,它会给出分段错误。

在不知道故障发生的情况下,我只能说这么多。尝试将printf语句放在所有3个指针的赋值之前,并查看。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60303585

复制
相关文章
PrestaShop 1.7 中的 Size 如何配置
选择你要配置的产品,然后在 Combinations 中选择 Product With Combinations
HoneyMoose
2020/05/12
7760
PrestaShop 1.7 中的 Size 如何配置
PrestaShop 网站漏洞修复如何修复
PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多,国内使用该系统的外贸公司也很多,PrestaShop扩展性较高,模板也多,多种货币自由切换,并支持信用卡以及paypal支付,是外贸网站的首选。就在最近几天,PrestaShop被爆出有远程代码注入漏洞,该漏洞影响范围较光,危害较大,可以上传webshell到网站根目录下。
技术分享达人
2019/01/01
4.1K0
安装 PrestaShop 1.6 - 详细的安装指南
你可以从 PrestaShop 官方下载最新的版本,下载地址为:http://www.prestashop.com/en/download.
HoneyMoose
2019/01/31
6.9K0
安装 PrestaShop 1.6 - 详细的安装指南
BUG-索引超出范围
小心一点 System.ArgumentOutOfRangeException:“Index was out of range. Must be non-negative and less than the size of the collection.”
用户9857551
2022/06/28
1.4K0
BUG-索引超出范围
PrestaShop 1.6 - 图文安装教程
本文档介绍的是 PrestaShop 的图文安装过程,用于指导 1.6 版本的安装。
HoneyMoose
2019/01/31
2.7K0
PrestaShop 1.6 - 图文安装教程
如何在Ubuntu 16.04上安装PrestaShop
如果您曾经考虑过开设在线商店,您可能会感受到各种免费的开源电子商务解决方案。虽然有这么多的选择意味着几乎可以肯定有一个可用的有效解决方案适合您的特定情况,但它也可能让新手感到困惑。其中一个选项是本指南的主题,它是PrestaShop,这是一个全球数千家商户使用的综合电子商务解决方案。
沈唁
2018/09/25
4.8K0
如何在Ubuntu 16.04上安装PrestaShop
PrestaShop 1.7 如何添加网站的跟踪代码
在 PrestaShop 创建购物车的时候,我们希望 PrestaShop 能够跟踪用户的访问。
HoneyMoose
2020/05/12
1.8K0
PrestaShop 1.7 如何添加网站的跟踪代码
C语言中数组超出范围,检测数组下标边界是否超出范围解决方案
iRows= iRsz; iColumns = iCsz; iCurrentRow = -1;
全栈程序员站长
2022/11/02
1.1K0
PrestaShop 1.7 创建税单的时候中文显示方框
这是因为针对不同语言环境下,PrestaShop 使用的字体不一样,当使用英语环境的时候,但是内容是中文的时候 PrestaShop 不能够使用正确的中文字体。
HoneyMoose
2020/05/11
1.1K0
PrestaShop 1.7 创建税单的时候中文显示方框
PrestaShop 1.7 如何启用 debug 模式
在 PrestaShop 控制台中,选择 高级参数(Advanced Parameters) 下面的 性能(Perfomance)
HoneyMoose
2020/05/10
1.5K0
PrestaShop 1.7 如何启用 debug 模式
PrestaShop 网站漏洞修复如何修复
PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多,国内使用该系统的外贸公司也很多,PrestaShop扩展性较高,模板也多,多种货币自由切换,并支持信用卡以及paypal支付,是外贸网站的首选。就在最近几天,PrestaShop被爆出有远程代码注入漏洞,该漏洞影响范围较光,危害较大,可以上传webshell到网站根目录下。
网站安全专家
2019/07/24
4.2K0
PrestaShop 1.7.6 在访问分类的时候提示错误
当打开 Debug 模式的时候,提示的错误是 mb_split 方法不能全局调用的错误。
HoneyMoose
2020/05/10
8720
PrestaShop 1.7.6 在访问分类的时候提示错误
PrestaShop 1.7 首页菜单如何进行调整
你也可以将左侧已经选择的菜单选择项目删除,通过单击 Remove 按钮来实现这个删除。
HoneyMoose
2020/05/11
1.4K0
PrestaShop 1.7 首页菜单如何进行调整
订单服务:订单流程
订单流程是指从订单产生到完成整个流转的过程,从而行程了一套标准流程规则。而不同的产品类型或业务类型在系统中的流程会千差万别,比如上面提到的线上实物订单和虚拟订单的流程,线上实物订单与 O2O 订单等,所以需要根据不同的类型进行构建订单流程。不管类型如何订单都包括正向流程和逆向流程,对应的场景就是购买商品和退换货流程,正向流程就是一个正常的网购步骤:
一个风轻云淡
2023/10/15
6590
订单服务:订单流程
Python面试题目之列表取值超出范围
# 下面列表取值超出范围,会报错还是有返回值: L1 = ['1','2','3','4','5','6',] print(L1[10]) print(L1[10:]) 第一个打印会报错: 第二个打
Jetpropelledsnake21
2019/02/15
1K0
订单支付超时,自动关闭订单实现
今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。
冯文议
2023/03/16
1.8K0
订单支付超时,自动关闭订单实现
LeetCode 1801. 积压订单中的订单总数(map)
给你一个二维整数数组 orders ,其中每个 orders[i] = [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。
Michael阿明
2021/09/06
4750
SAP PP计划订单和生产订单的日期计算
SAP PP 中关于计划订单和生产订单的日期计算 ,计划单的基本完成日期=上级物料需求日期-物料主数据MRP2视图的收货处理时间天数(全部以工厂日历的工作日计算) 计划单的基本开始日期=计划单的基本完成日期-物料主数据 。
用户5495712
2020/06/17
3.6K0
(1)订单模块---创建订单和更新订单如何保证幂等
用户在立即购买点击下单时候,有可能重复点击下单按钮,如果后端根据请求的次数相应的创建多笔订单,这是系统的bug,实际上用户只是点击一次下单,所以要保证下单接口的幂等性,对于业务订单的支付状态或者物流状态变更都是基于订单表进行的更新update操作,也需要保证幂等性
小时的棒棒糖
2023/09/26
4810
点击加载更多

相似问题

设置FormControl的值会破坏其类型

25

XML :基于父属性类型的子元素类型

24

未检查React类型(脚本)道具

10

React.js:更改子状态也会更改父级传递的父类型。

23

React元素属性类型定义

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文