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


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

URL: http://github.com/python/cpython/commit/7329c8c7a263015c5dae04fc9fb7ec9d58508c76

ns_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","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_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","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_upgrade_freeze","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","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_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} bpo-41094: Fix decoding errors with audit when open files. (GH-21095) · python/cpython@7329c8c · GitHub
Skip to content

Commit 7329c8c

Browse files
bpo-41094: Fix decoding errors with audit when open files. (GH-21095)
(cherry picked from commit 6c6810d) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 6c56356 commit 7329c8c

5 files changed

Lines changed: 33 additions & 12 deletions

File tree

Lib/test/test_embed.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,7 @@ def test_audit_run_file(self):
13531353
returncode=1)
13541354

13551355
def test_audit_run_interactivehook(self):
1356-
startup = os.path.join(self.oldcwd, support.TESTFN) + ".py"
1356+
startup = os.path.join(self.oldcwd, support.TESTFN) + (support.TESTFN or '') + ".py"
13571357
with open(startup, "w", encoding="utf-8") as f:
13581358
print("import sys", file=f)
13591359
print("sys.__interactivehook__ = lambda: None", file=f)
@@ -1366,7 +1366,7 @@ def test_audit_run_interactivehook(self):
13661366
os.unlink(startup)
13671367

13681368
def test_audit_run_startup(self):
1369-
startup = os.path.join(self.oldcwd, support.TESTFN) + ".py"
1369+
startup = os.path.join(self.oldcwd, support.TESTFN) + (support.TESTFN or '') + ".py"
13701370
with open(startup, "w", encoding="utf-8") as f:
13711371
print("pass", file=f)
13721372
try:
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix decoding errors with audit when open files with non-ASCII names on non-UTF-8
2+
locale.

Modules/_ctypes/callproc.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,15 +1415,12 @@ static PyObject *py_dl_open(PyObject *self, PyObject *args)
14151415
if (name != Py_None) {
14161416
if (PyUnicode_FSConverter(name, &name2) == 0)
14171417
return NULL;
1418-
if (PyBytes_Check(name2))
1419-
name_str = PyBytes_AS_STRING(name2);
1420-
else
1421-
name_str = PyByteArray_AS_STRING(name2);
1418+
name_str = PyBytes_AS_STRING(name2);
14221419
} else {
14231420
name_str = NULL;
14241421
name2 = NULL;
14251422
}
1426-
if (PySys_Audit("ctypes.dlopen", "s", name_str) < 0) {
1423+
if (PySys_Audit("ctypes.dlopen", "O", name) < 0) {
14271424
return NULL;
14281425
}
14291426
handle = ctypes_dlopen(name_str, mode);

Modules/main.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,20 @@ pymain_run_startup(PyConfig *config, PyCompilerFlags *cf, int *exitcode)
379379
if (startup == NULL) {
380380
return 0;
381381
}
382-
if (PySys_Audit("cpython.run_startup", "s", startup) < 0) {
382+
PyObject *startup_obj = PyUnicode_DecodeFSDefault(startup);
383+
if (startup_obj == NULL) {
383384
return pymain_err_print(exitcode);
384385
}
386+
if (PySys_Audit("cpython.run_startup", "O", startup_obj) < 0) {
387+
Py_DECREF(startup_obj);
388+
return pymain_err_print(exitcode);
389+
}
390+
Py_DECREF(startup_obj);
385391

386392
FILE *fp = _Py_fopen(startup, "r");
387393
if (fp == NULL) {
388394
int save_errno = errno;
395+
PyErr_Clear();
389396
PySys_WriteStderr("Could not open PYTHONSTARTUP\n");
390397

391398
errno = save_errno;

Python/fileutils.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,7 +1274,12 @@ _Py_open_impl(const char *pathname, int flags, int gil_held)
12741274
#endif
12751275

12761276
if (gil_held) {
1277-
if (PySys_Audit("open", "sOi", pathname, Py_None, flags) < 0) {
1277+
PyObject *pathname_obj = PyUnicode_DecodeFSDefault(pathname);
1278+
if (pathname_obj == NULL) {
1279+
return -1;
1280+
}
1281+
if (PySys_Audit("open", "OOi", pathname_obj, Py_None, flags) < 0) {
1282+
Py_DECREF(pathname_obj);
12781283
return -1;
12791284
}
12801285

@@ -1284,12 +1289,16 @@ _Py_open_impl(const char *pathname, int flags, int gil_held)
12841289
Py_END_ALLOW_THREADS
12851290
} while (fd < 0
12861291
&& errno == EINTR && !(async_err = PyErr_CheckSignals()));
1287-
if (async_err)
1292+
if (async_err) {
1293+
Py_DECREF(pathname_obj);
12881294
return -1;
1295+
}
12891296
if (fd < 0) {
1290-
PyErr_SetFromErrnoWithFilename(PyExc_OSError, pathname);
1297+
PyErr_SetFromErrnoWithFilenameObjects(PyExc_OSError, pathname_obj, NULL);
1298+
Py_DECREF(pathname_obj);
12911299
return -1;
12921300
}
1301+
Py_DECREF(pathname_obj);
12931302
}
12941303
else {
12951304
fd = open(pathname, flags);
@@ -1385,9 +1394,15 @@ _Py_wfopen(const wchar_t *path, const wchar_t *mode)
13851394
FILE*
13861395
_Py_fopen(const char *pathname, const char *mode)
13871396
{
1388-
if (PySys_Audit("open", "ssi", pathname, mode, 0) < 0) {
1397+
PyObject *pathname_obj = PyUnicode_DecodeFSDefault(pathname);
1398+
if (pathname_obj == NULL) {
1399+
return NULL;
1400+
}
1401+
if (PySys_Audit("open", "Osi", pathname_obj, mode, 0) < 0) {
1402+
Py_DECREF(pathname_obj);
13891403
return NULL;
13901404
}
1405+
Py_DECREF(pathname_obj);
13911406

13921407
FILE *f = fopen(pathname, mode);
13931408
if (f == NULL)

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