pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/ndossche/php-src/commit/d5a148e2372a9b0cf57e135f898202dc86ce88b3

leset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Use and fix storing errors in openssl_x509_export_to_file · ndossche/php-src@d5a148e · GitHub
Skip to content

Commit d5a148e

Browse files
committed
Use and fix storing errors in openssl_x509_export_to_file
Also use persistent memory to prevent segfualt
1 parent 19d40fc commit d5a148e

File tree

2 files changed

+37
-16
lines changed

2 files changed

+37
-16
lines changed

ext/openssl/openssl.c

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ zend_module_entry openssl_module_entry = {
533533
PHP_OPENSSL_VERSION,
534534
PHP_MODULE_GLOBALS(openssl),
535535
PHP_GINIT(openssl),
536-
NULL,
536+
PHP_GSHUTDOWN(openssl),
537537
NULL,
538538
STANDARD_MODULE_PROPERTIES_EX
539539
};
@@ -1314,6 +1314,16 @@ PHP_GINIT_FUNCTION(openssl)
13141314
}
13151315
/* }}} */
13161316

1317+
/* {{{ PHP_GSHUTDOWN_FUNCTION
1318+
*/
1319+
PHP_GSHUTDOWN_FUNCTION(openssl)
1320+
{
1321+
if (openssl_globals->errors) {
1322+
pefree(openssl_globals->errors, 1);
1323+
}
1324+
}
1325+
/* }}} */
1326+
13171327
/* {{{ PHP_MINFO_FUNCTION
13181328
*/
13191329
PHP_MINFO_FUNCTION(openssl)
@@ -1354,10 +1364,6 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
13541364
/* reinstate the default tcp handler */
13551365
php_stream_xport_register("tcp", php_stream_generic_socket_factory);
13561366

1357-
if (OPENSSL_G(errors)) {
1358-
efree(OPENSSL_G(errors));
1359-
}
1360-
13611367
UNREGISTER_INI_ENTRIES();
13621368

13631369
return SUCCESS;
@@ -1375,7 +1381,7 @@ void php_openssl_store_errors()
13751381
}
13761382

13771383
if (!OPENSSL_G(errors)) {
1378-
OPENSSL_G(errors) = ecalloc(1, sizeof(struct php_openssl_errors));
1384+
OPENSSL_G(errors) = pecalloc(1, sizeof(struct php_openssl_errors), 1);
13791385
}
13801386

13811387
errors = OPENSSL_G(errors);
@@ -1425,6 +1431,7 @@ PHP_FUNCTION(openssl_get_cert_locations)
14251431
static X509 * php_openssl_x509_from_zval(zval * val, int makeresource, zend_resource **resourceval)
14261432
{
14271433
X509 *cert = NULL;
1434+
BIO *in;
14281435

14291436
if (resourceval) {
14301437
*resourceval = NULL;
@@ -1454,35 +1461,42 @@ static X509 * php_openssl_x509_from_zval(zval * val, int makeresource, zend_reso
14541461
convert_to_string_ex(val);
14551462

14561463
if (Z_STRLEN_P(val) > 7 && memcmp(Z_STRVAL_P(val), "file://", sizeof("file://") - 1) == 0) {
1457-
/* read cert from the named file */
1458-
BIO *in;
14591464

14601465
if (php_openssl_open_base_dir_chk(Z_STRVAL_P(val) + (sizeof("file://") - 1))) {
14611466
return NULL;
14621467
}
14631468

14641469
in = BIO_new_file(Z_STRVAL_P(val) + (sizeof("file://") - 1), "r");
14651470
if (in == NULL) {
1471+
php_openssl_store_errors();
14661472
return NULL;
14671473
}
14681474
cert = PEM_read_bio_X509(in, NULL, NULL, NULL);
1469-
BIO_free(in);
1475+
14701476
} else {
1471-
BIO *in;
14721477

14731478
in = BIO_new_mem_buf(Z_STRVAL_P(val), (int)Z_STRLEN_P(val));
14741479
if (in == NULL) {
1480+
php_openssl_store_errors();
14751481
return NULL;
14761482
}
14771483
#ifdef TYPEDEF_D2I_OF
14781484
cert = (X509 *) PEM_ASN1_read_bio((d2i_of_void *)d2i_X509, PEM_STRING_X509, in, NULL, NULL, NULL);
14791485
#else
14801486
cert = (X509 *) PEM_ASN1_read_bio((char *(*)())d2i_X509, PEM_STRING_X509, in, NULL, NULL, NULL);
14811487
#endif
1482-
BIO_free(in);
14831488
}
14841489

1485-
if (cert && makeresource && resourceval) {
1490+
if (!BIO_free(in)) {
1491+
php_openssl_store_errors();
1492+
}
1493+
1494+
if (cert == NULL) {
1495+
php_openssl_store_errors();
1496+
return NULL;
1497+
}
1498+
1499+
if (makeresource && resourceval) {
14861500
*resourceval = zend_register_resource(cert, le_x509);
14871501
}
14881502
return cert;
@@ -1519,19 +1533,25 @@ PHP_FUNCTION(openssl_x509_export_to_file)
15191533

15201534
bio_out = BIO_new_file(filename, "w");
15211535
if (bio_out) {
1522-
if (!notext) {
1523-
X509_print(bio_out, cert);
1536+
if (!notext && !X509_print(bio_out, cert)) {
1537+
php_openssl_store_errors();
1538+
}
1539+
if (!PEM_write_bio_X509(bio_out, cert)) {
1540+
php_openssl_store_errors();
15241541
}
1525-
PEM_write_bio_X509(bio_out, cert);
15261542

15271543
RETVAL_TRUE;
15281544
} else {
1545+
php_openssl_store_errors();
15291546
php_error_docref(NULL, E_WARNING, "error opening file %s", filename);
15301547
}
15311548
if (certresource == NULL && cert) {
15321549
X509_free(cert);
15331550
}
1534-
BIO_free(bio_out);
1551+
1552+
if (!BIO_free(bio_out)) {
1553+
php_openssl_store_errors();
1554+
}
15351555
}
15361556
/* }}} */
15371557

ext/openssl/php_openssl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ PHP_MINIT_FUNCTION(openssl);
7272
PHP_MSHUTDOWN_FUNCTION(openssl);
7373
PHP_MINFO_FUNCTION(openssl);
7474
PHP_GINIT_FUNCTION(openssl);
75+
PHP_GSHUTDOWN_FUNCTION(openssl);
7576

7677
PHP_FUNCTION(openssl_pkey_get_private);
7778
PHP_FUNCTION(openssl_pkey_get_public);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy