Infidel goes wild
🇬🇧 English
Planetfall was yesterday's public release, but I've spent weeks on Infidel. I found an egregious bug: a wild pointer that scribbles over memory. Most call it trivial, but as a C programmer, I see memory corruption as the worst sin.
It's also a compiler bug. Infidel uses ENDLESS-DESERT to simulate unmapped areas. Dropped items go to DESERT-TABLE with lat/long.
The DESERT-TO-TABLE routine has a bug where it fails to properly handle the SLOC argument, causing memory corruption. The bug is hard to detect because items have a one-in-three chance of being lost to sand. I analyzed Infidel release 22 serial 840522 (Macintosh update); original release 830916 has the same bug.
The routine writes to DESERT-TABLE using incorrect indexing, overwriting adjacent memory. This violates memory safety despite minimal gameplay impact. The Z-machine implementation exposes the flaw via pointer arithmetic errors in the table update loop.
🇸🇦 العربية
تحليل خطأ المؤشر البريء Infidel
تم إصدار Planetfall بالأمس، لكنني قضيت أسابيع على Infidel. عثرت على خطأ فظيع: مؤشر بريء scribbles على الذاكرة. يراها معظم الناس بسيطة، لكن كمبرمج C، أرى تلف الذاكرة كأشد الذنوب. إنه أيضًا خطأ في المترجم. Infidel يستخدم ENDLESS-DESERT لمحاكاة المناطق غير الموصوفة. العناصر الملقاة تذهب إلى DESERT-TABLE مع lat/long. روتين DESERT-TO-TABLE به خطأ حيث يفشل في التعامل بشكل صحيح مع Argument SLOC، مما يسبب تلف الذاكرة. هذا الخطأ صعب الكشف لأن العناصر لديها فرصة من ثلاثة إلى ضياعها في الرمال. قمت بتحليل إصدار Infidel 22 serial 840522 (تحديث Macintosh)؛ الإصدار الأصلي 830916 له نفس الخطأ. الروتين يكتب على DESERT-TABLE باستخدام فهرس خاطئ، ممسحًا الذاكرة المجاورة. هذا ينتهك سلامة الذاكرة رغم التأثير البسيط على اللعب. تنفيذ Z-machine يكشف الخطأ من خلال أخطاء حسابات المؤشرات في حلقة تحديث الجدول.
لماذا يُعتبر خطأ المؤشر البريء egregious رغم التأثير البسيط على اللعب؟
بصفتي مبرمج C، تلف الذاكرة هو الذنب الأكبر، وهذا الخطأ ينبع أيضًا من مشكلة في المترجم، مما يجعله fundamentally unsafe بغض النظر عن الآثار الملاحظة.
🇧🇩 বাংলা
Infidel Wild Pointer Bug Analysis
Planetfall গত দিনে পাবলিক রিলিজ, কিন্তু আমি Infidel সابيع ধরে কাজ করছি। আমি একটি dreadful বাগ খুঁজে পেয়েছি: একটি wild pointer যা মেমরি scribbles। অধিকাংশ মানুষ এটি trivial মনে করে, কিন্তু একজন C প্রোগ্রামার হিসেবে, আমি মেমরি কর্পশনকে সবচেয়ে বড় পাপ মনে করি। এটি একটি কম্পাইলার বগও। Infidel ENDLESS-DESERT ব্যবহার করে অম্যাপড এলাকা সিমুলেট করার জন্য। ড্রপ করা আইটেম DESERT-TABLEে lat/long সহ যেতে পারে। DESERT-TO-TABLE রুটিনে একটি বাগ আছে যেখানে এটি SLOC argument সঠিকভাবে হ্যান্ডল করতে ব্যর্থ হচ্ছে, মেমরি কর্পশনের কারণ banaye। এই বাগের पता করা কঠিন কারণ আইটেমs রेतে হারানোর এক-তিন সম্ভাবনা আছে। আমি Infidel release 22 serial 840522 (Macintosh update) বিশ্লেষণ করেছি; মূল রিলিজ 830916ে same বাগ আছে। রুটিন DESERT-TABLE লেখা incorrect indexing ব্যবহার করে, adjacent মেমরি overwrite করে। এটি মেমরি সুরক্ষার উলঝুলি ছাড়াই minimal গেমপ্লে প্রভাবের বावजूद। Z-machine বাস্তবায়ন pointer arithmetic ত্রুটির মাধ্যমে তালিকা আপডেট লুপে দুষ্টতা প্রকাশ করে।
একটি wild pointer বাগকে minimal গেমপ্লে প্রভাবের বাবजूद egregious কেন মনে করা হয়?
As a C programmer, memory corruption is the worst possible sin, and this bug also stems from a compiler issue, making it fundamentally unsafe regardless of observable effects.
🇩🇪 Deutsch
Infidel Wild Pointer Bug Analysis
Planetfall wurde gestern öffentlich veröffentlicht, aber ich habe Wochen an Infidel verbracht. Ich fand einen egregiosen Bug: einen wilden Pointer, der über den Speicher schreibt. Die meisten halten es für trivial, aber als C-Programmierer sehe ich Speicherverstöße als die schlimmste Sünde.
Es ist auch ein Compiler-Bug. Infidel verwendet ENDLESS-DESERT, um nicht zugeordnete Bereiche zu simulieren. Abgelegte Gegenstände gehen nach DESERT-TABLE mit lat/long.
Die DESERT-TO-TABLE-Routine hat einen Bug, bei dem sie das SLOC-Argument nicht ordnungsgemäß handhabt und so Speicherverstöße verursacht. Der Bug ist schwer zu erkennen, weil Gegenstände eine Ein-Drei-Chance haben, in der Sand zu gehen. Ich analysierte Infidel Release 22 serial 840522 (Macintosh-Update); die Originalfreigabe 830916 hat denselben Bug.
Die Routine schreibt mit falscher Indizierung in DESERT-TABLE, überschreibt benachbarten Speicher. Dies verletzt die Speichersicherheit trotz minimaler Spielauswirkung. Die Z-Machine-Implementierung macht den Fehler durch Pointer-Arithmetik-Fehler im Tabellenaktualisierungsloop sichtbar.
Warum wird dieser wilde Pointer-Bug trotz minimaler Spielauswirkung als egregious betrachtet?
As a C programmer, memory corruption is the worst possible sin, and this bug also stems from a compiler issue, making it fundamentally unsafe regardless of observable effects.
🇪🇸 Español
Análisis de error de puntero salvaje en Infidel
Planetfall se lanzó ayer en público, pero he pasado semanas en Infidel. Encontré un error egregio: un puntero salvaje que rabulea sobre la memoria. La mayoría lo consideran trivial, pero como programador en C, veo la corrupción de memoria como el peor pecado.
También es un error del compilador. Infidel usa ENDLESS-DESERT para simular áreas sin mapear. Los objetos caídos van a DESERT-TABLE con lat/long.
El rutina DESERT-TO-TABLE tiene un error donde falla en manejar adecuadamente el argumento SLOC, causando corrupción de memoria. El error es difícil de detectar porque los objetos tienen una probabilidad de uno en tres de perderse en la arena. Analicé la versión 22 de Infidel serial 840522 (actualización de Macintosh); la versión original 830916 tiene el mismo error.
La rutina escribe en DESERT-TABLE usando un índice incorrecto, sobrescribiendo memoria adyacente. Esto viola la seguridad de memoria a pesar de tener impacto mínimo en el juego. La implementación de la máquina Z revela el error a través de errores de aritmética de punteros en el bucle de actualización de la tabla.
¿Por qué se considera egregio este error de puntero salvaje a pesar del impacto mínimo en el juego?
Como programador en C, la corrupción de memoria es el peor pecado posible, y este error también proviene de un problema del compilador, lo que lo hace fundamentalmente inseguro independientemente de los efectos observables.
🇫🇷 Français
Analyse d'erreur de pointeur sauvage Infidel
Planetfall a été publié hier, mais j'ai passé des semaines sur Infidel. J'ai trouvé un bug égregieux : un pointeur sauvage qui gribouille la mémoire. La plupart le considèrent comme trivial, mais en tant que programmeur C, je vois la corruption de mémoire comme le pire des péchés.
C'est aussi un bug de compilateur. Infidel utilise ENDLESS-DESERT pour simuler des zones non cartographiées. Les objets abandonnés vont à DESERT-TABLE avec lat/long.
La routine DESERT-TO-TABLE a un bug où elle échoue à correctement gérer l'argument SLOC, provoquant une corruption de mémoire. Ce bug est difficile à détecter car les objets ont une chance sur trois d'être perdus dans le sable. J'ai analysé la version 22 d'Infidel serial 840522 (mise à jour Macintosh) ; la version originale 830916 a le même bug.
La routine écrit sur DESERT-TABLE avec un index incorrect, écrasant la mémoire adjacente. Cela viole la sécurité de mémoire malgré un impact minimal sur le jeu. L'implémentation de la machine Z expose l'erreur à travers des erreurs d'arithmétique de pointeurs dans la boucle de mise à jour de la table.
Pourquoi cet erreur de pointeur sauvage est-elle considérée comme egregious malgré un impact minimal sur le jeu ?
En tant que programmeur C, la corruption de mémoire est le pire péché possible, et ce bug tire également d'un problème de compilateur, ce qui le rend fondamentalement unsafe, quel que soit l'effet observable.
🇮🇳 हिन्दी
Infidel Wild Pointer Bug Analysis
Planetfall कल सार्वजनिक रूप से जारी किया गया, लेकिन मैं Infidel पर हफ्तों से काम कर रहा हूं। मुझे एक भयंकर बग मिला: एक जंगली pointer जो स्मृति पर लिख रहा है। ज्यादातर इसे मामूली समझते हैं, लेकिन एक C प्रोग्रामर के रूप में, मुझे स्मृति क्षति सबसे गंभीर पाप लगती है। यह एक कंपाइलर बग भी है। Infidel ENDLESS-DESERT का उपयोग अनमैप्ड एरिया सिमुलेट करने के लिए करता है। dropped आइटम DESERT-TABLE में जाते हैं lat/long के साथ। DESERT-TO-TABLE रूटीन में एक बग है जहाँ यह SLOC तर्क को ठीक से संभालने में विफल रहता है, स्मृति क्षति का कारण बनता है। इस बग का पता लगाना कठिन है क्योंकि वस्तुओं में रेत में खो जाने की एक-तीन की संभावना होती है। मुझे Infidel release 22 serial 840522 (Macintosh अपडेट) का विश्लेषण किया; मूल रिलीज 830916 में same bug है। रूटीन DESERT-TABLE में गलत इंडेक्सिंग का उपयोग करके लिखता है, ओवरराइटिंग adjacent स्मृति। यह स्मृति सुरक्षा का उल्लंघन करता है चाहे गेमप्ले प्रभाव न्यूनतम हो। Z-मशीन कार्यान्वयन pointer arithmetic त्रुटियों के माध्यम से तालिका अपडेट लूप में दोष उजागर करता है।
इस जंगली pointer बग को मामूली गेमप्ले प्रभाव के बावजूद क्यों egregious माना जाता है?
एक C प्रोग्रामर के रूप में, स्मृति क्षति संभवतः सबसे बुरा पाप है, और यह बग एक कंपाइलर मुद्दे से भी आता है, जिससे यह मौलिक रूप से असुरक्षित है चाहे देखे जाने वाले प्रभाव कुछ भी हों।
🇮🇩 Bahasa Indonesia
Analisis Bug Penunjuk Liar Infidel
Planetfall kemarin dirilis publik, tapi saya minggu-minggu di Infidel. Saya menemukan bug yang egregious: penunjuk liar yang scribbles di memori. Mayoranya dianggap trivial, tetapi sebagai programmer C, saya melihat korusi memori sebagai dosa terburuk.
Ini juga bug compiler. Infidel menggunakan ENDLESS-DESERT untuk mensimulasikan area yang tidak dipetakan. Item yang dibuang pergi ke DESERT-TABLE dengan lat/long.
Fungsi DESERT-TO-TABLE punya bug di mana ia gagal menangani argumen SLOC dengan benar, menyebabkan korusi memori. Bug ini sulit dideteksi karena item memiliki peluang satu dari tiga hilang di pasir. Saya menganalisis Infidel release 22 serial 840522 (update Macintosh); rilis asli 830916 memiliki bug yang sama.
Rutinitas menulis ke DESERT-TABLE dengan pengindeksan yang salah, menimpa memori yang bersebelahan. Ini melanggar keamanan memi meskipun dampak gameplay yang minimal. Implementasi Z-machine mengekspos kesalahan melalui kesalahan aritmetik penunjuk dalam peruluan pembaruan tabel.
Mengapa bug penunjuk liar ini dianggap egregious meskipun dampak gameplay yang minimal?
As a C programmer, memory corruption is the worst possible sin, and this bug also stems from a compiler issue, making it fundamentally unsafe regardless of observable effects.
🇯🇵 日本語
Infidel Wild Pointer Bug Analysis
Planetfall は昨日公式リリースされましたが、私はInfidel に数週間費やしました。卑劣なバグを見つけました:メモリを書き込む野指針。ほとんどの人は trivial だと思いますが、C プログラマーとして、私はメモリ破壊を最悪の罪と見ます。コンパイラのバグでもあります。Infiler は ENDLESS-DESERT を使用して未マップ領域をシミュレートします。捨てられたアイテムは lat/long と共に DESERT-TABLE に行きます。DESERT-TO-TABLE ルーチンにはバグがあり、SLOC 引数を適切に処理できず、メモリ破壊を引き起こします。このバグは検出が困難です。アイテムの 1/3 が砂に失われるからです。Infiler release 22 serial 840522 (Macintosh アップデート) を分析しました;オリジナルリリース 830916 でも同じバグがあります。ルーチンは誤ったインデックスで DESERT-TABLE に書き込み、隣接するメモリを上書きします。これはゲームプレイへの最小の影響にもかかわらず、メモリ安全性に違反します。Zマシンの実装は、テーブル更新ループでのポインタ算術エラーによってこの欠陥を露呈させます。
最小限のゲームプレイ影響の野指針バグがなぜ卑劣とみなされるのか?
As a C programmer, memory corruption is the worst possible sin, and this bug also stems from a compiler issue, making it fundamentally unsafe regardless of observable effects.
🇧🇷 Português
Análise de Bug de Ponteiro Selvagem Infidel
Planetfall foi lançado publicamente ontem, mas passei semanas no Infidel. Encontrei um bug egregious: um ponteiro selvagem que rabiscam a memória. A maioria considera trivial, mas como programador em C, vejo a corrupção de memória como o pior pecado.
Também é um bug do compilador. Infidel usa ENDLESS-DESERT para simular áreas não mapeadas. Itens abandonados vão para DESERT-TABLE com lat/long.
A rotina DESERT-TO-TABLE tem um bug onde falha em lidar corretamente com o argumento SLOC, causando corrupção de memória. O bug é difícil de detectar porque os itens têm uma chance de uma em três de serem perdidos na areia. Analisei o lançamento 22 do Infidel serial 840522 (atualização Macintosh); o lançamento original 830916 tem o mesmo bug.
A rotina escreve em DESERT-TABLE usando indexação incorreta, sobrescrevendo memória adjacente. Isso viola a segurança de memória apesar de impacto mínimo no jogo. A implementação da máquina Z revela o erro através de erros de aritmética de ponteiros no loop de atualização da tabela.
Por que este bug de ponteiro selvagem é considerado egregious apesar do impacto mínimo no jogo?
Como programador em C, a corrupção de memória é o pior pecado possível, e este bug também vem de um problema do compilador, tornando-o fundamentalmente inseguro, independentemente de efeitos observáveis.
🇷🇺 Русский
Анализ ошибки wild pointer Infidel
Planetfall был выпущен вчера, но я потратил недели на Infidel. Нашел ужасную ошибку: дикий указатель, который скриблит память. Большинство считают это тривиальной, но как программист на C, я считаю порчу памяти самым тяжким грехом. Это также ошибка компилятора. Infidel использует ENDLESS-DESERT для симуляции неотображенных областей. Выброшенные предметы попадают в DESERT-TABLE с lat/long. Рутена DESERT-TO-TABLE имеет ошибку, где она некорректно обрабатывает аргумент SLOC, вызывая порчу памяти. Ошибка трудно обнаружить, так как у предметов есть шанс один из трех потеряться в песке. Я проанализировал релиз Infidel 22 serial 840522 (обновление для Macintosh); оригинальный релиз 830916 имеет ту же ошибку. Рутена пишет в DESERT-TABLE с неверным индексом, перезаписывая смежную память. Это нарушает безопасность памяти, несмотря на минимальное влияние на игру. Реализация Z-machine обнажает ошибку через ошибки арифметики указателей в цикле обновления таблицы.
Почему эта ошибка wild pointer считается egregious несмотря на минимальное влияние на игру?
As a C programmer, memory corruption is the worst possible sin, and this bug also stems from a compiler issue, making it fundamentally unsafe regardless of observable effects.
🇨🇳 简体中文
Infidel Wild Pointer Bug Analysis
Planetfall yesterday公开发布,但我花了几周时间在Infidel上。我发现了一个恶劣的Bug:一个野指针在内存中涂鸦。大多数人认为这很琐碎,但作为一个C程序员,我将内存破坏视为最严重的罪过。这也是一个编译器Bug。Infidel使用ENDLESS-DESERT来模拟未映射区域。丢弃的物品去DESERT-TABLE,带有纬度/经度。DESERT-TO-TABLE例程有一个Bug,其中它未能正确处理SLOC参数,导致内存破坏。这个Bug很难检测,因为物品有三分之一的几率丢失到沙子中。我分析了Infidel发行版22 serial 840522(Macintosh更新);原始发行版830916有相同的Bug。该例程使用错误的索引写入DESERT-TABLE,覆盖相邻内存。这违反了内存安全,尽管对游戏玩法影响最小。Z机器实现通过表更新循环中的指针算术错误暴露了这个缺陷。
为什么这个野指针Bug被认为是恶劣的,尽管游戏影响最小?
作为一个C程序员,内存破坏是可能的最糟糕的罪过,而这个Bug也源于一个编译器问题,使其在无论可观察到的影响如何的情况下都是根本不安全的。