This rather trivial code construct caused database corruption (and a serious flood of tech support calls).
Progress Knowledge Base entry #18223:
Assigning a key field in any statement before a reference to a
User-defined Function in that same statement has been found to cause
index corruption or give run-time error messages.
This applies to any statement that can have multiple assignments in
the same statement, e.g., ASSIGN, SET, UPDATE, IMPORT, PROMPT-FOR,
CHOOSE.
For at least 2 years(!) this bug was ignored by PSC. In version 8.3B they modified the compiler to issue a warning. In version 9 they finally fixed the bug.
This particular bug costed us some serious money. In desperation I used a debugger to find the bug myself and developed a fix for it. To all of our clients we distributed a small program that patched their Progress runtime binary. While this might be illegal (or in breach of EULA), I still don't feel like a criminal.
Hi Richard, good to see we I'm not alone in the world, I also used progress in Brazil. Actually our company, Datasul, imported progress and became the major partner of PSC there. I can relate to that, sometimes we were frustated with their slow response, but i think it was a good product.
Anyway, good memories from that time. Today I'm in another company and I use .net for our development. Sometimes I miss the 4GL we used for business application. It was a good concept.
Regards.
I don't think that looking at legally obtained source code and taking ideas is the same like de-compiling a program and looking at the assembler listing.
I think the major difference is the intention of the author. If he publishes the source he invites others to look. If he keeps the source closed then he wants not to share it. If he could distribute his program without giving away even the binaries he would probably do so.
In the German law you require the permission of the author for de-compiling a program (except for creation of interoperability etc...). So they don't talk about reverse engineering in general but about decompilation without permission and I think that is reasonable.
This has nothing to do with ownerships of ideas. If you have an idea of course you cannot prevent others from coming up with the same idea or discovery. In science very often similar things are discovered at the same time independent of each other, because the time is right. If the CERN would not have found the higgs boson, some others would probably very soon (The US guys just gave up to early).
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.[1] It often involves taking something (e.g., a mechanical device, electronic component, software program, or biological, chemical, or organic matter) apart and analyzing its workings in detail to be used in maintenance, or to try to make a new device or program that does the same thing without using or simply duplicating (without understanding) the original.
This is a too general definition: we are talking of software here, not biological, chemical, etc..
When talking about software RE it means to look at the binaries usually by the means of some tool (a disassembler).
I never RE anything becasue I don't know how to do it and I don't want to spend days (weeks) learning it.
Said the above, in all my honsety, I CANNOT be against RE because I have took many ideas from some sources (ippo*) that I have made up my mind have been developed with the help of RE-ing an exsisting engine.
Note that in this case is totally off topic to debate if ippos are actually RE of Rybka or not. What it counts is that I believe they are and neverthless I looked at their sources and took ideas. This IMO makes me in a position where I cannot blame RE even if I have never used it personally, otherwise I would be an hypocrite.
RE has been going on for years, with people not looking at one line of ASM. Give a program a position, a depth limit, and then look at the output. Do this enough times and you can begin to recognize what it is doing, without any need to look at the asm...
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.[1] It often involves taking something (e.g., a mechanical device, electronic component, software program, or biological, chemical, or organic matter) apart and analyzing its workings in detail to be used in maintenance, or to try to make a new device or program that does the same thing without using or simply duplicating (without understanding) the original.
This is a too general definition: we are talking of software here, not biological, chemical, etc..
When talking about software RE it means to look at the binaries usually by the means of some tool (a disassembler).
I never RE anything becasue I don't know how to do it and I don't want to spend days (weeks) learning it.
Said the above, in all my honsety, I CANNOT be against RE because I have took many ideas from some sources (ippo*) that I have made up my mind have been developed with the help of RE-ing an exsisting engine.
Note that in this case is totally off topic to debate if ippos are actually RE of Rybka or not. What it counts is that I believe they are and neverthless I looked at their sources and took ideas. This IMO makes me in a position where I cannot blame RE even if I have never used it personally, otherwise I would be an hypocrite.
RE has been going on for years, with people not looking at one line of ASM. Give a program a position, a depth limit, and then look at the output. Do this enough times and you can begin to recognize what it is doing, without any need to look at the asm...
This is not what many people consider to be RE and the information that you can get from it is clearly less than the information that you can get from also looking at ASM lines.
I think that there should be no legal problem with looking at the output of houdini or other programs in order to learn what they do.
Lemme clarify my position instead of answering each one of you.
I consider RE as stealing and since a couple of years I have the EU law on my side. It's really simple, if a programmer wants to reveal his secrets he will offer the source code with the executable. Therefore it's unethical to RE the executable without the consent of the programmer.
The programmer code is about ethical behaviour and RE does not fit into that whether the grey areas of the Law allows it or not as you are doing things against the express wish of the programmer.
Bottom line: invent your own ideas, don't steal them.
Rebel wrote:Lemme clarify my position instead of answering each one of you.
I consider RE as stealing and since a couple of years I have the EU law on my side. It's really simple, if a programmer wants to reveal his secrets he will offer the source code with the executable. Therefore it's unethical to RE the executable without the consent of the programmer.
The programmer code is about ethical behaviour and RE does not fit into that whether the grey areas of the Law allows it or not as you are doing things against the express wish of the programmer.
Bottom line: invent your own ideas, don't steal them.
Too harsh ?
only to make things clear
Do you agree with the following?
1)Looking at the output of houdini or other programs by giving them to analyze chess positions in order to learn what they do is not what you consider as RE.
2)If other people already did the demage and released source code that is free for download and nobody cared to stop them on time(the Ippolit case)
then people who look at the relevant source and are not responsible for generating it are not quilty.
Rebel wrote:Lemme clarify my position instead of answering each one of you.
I consider RE as stealing and since a couple of years I have the EU law on my side. It's really simple, if a programmer wants to reveal his secrets he will offer the source code with the executable. Therefore it's unethical to RE the executable without the consent of the programmer.
The programmer code is about ethical behaviour and RE does not fit into that whether the grey areas of the Law allows it or not as you are doing things against the express wish of the programmer.
Bottom line: invent your own ideas, don't steal them.
Too harsh ?
only to make things clear
Do you agree with the following?
1)Looking at the output of houdini or other programs by giving them to analyze chess positions in order to learn what they do is not what you consider as RE.
I see no problem with that. We use the output of other engines all the time via eng-eng matches.
2)If other people already did the demage and released source code that is free for download and nobody cared to stop them on time (the Ippolit case) then people who look at the relevant source and are not responsible for generating it are not quilty.
Nasty one Uri, but a good one. Assuming Ippolit is derived from Rybka after all it's like you say, the damage is already done and is irreversible. From a practical point of view I suggest everybody should use it (equal chances for everyone) but mention the things you take in the README if they are not in the CPW or are not common knowledge (in the meantime).
Then this code of honor is not even fit for toilet paper. Damage is ONLY done by the publication of a stolen piece of RE work IF people use it / the ideas in it. If everyone would ignore it there would be no damage at all.
It is the users of REed information that are causing the damage, not those doing the RE.
hgm wrote:Then this code of honor is not even fit for toilet paper. Damage is ONLY done by the publication of a stolen piece of RE work IF people use it / the ideas in it. If everyone would ignore it there would be no damage at all.
It is the users of REed information that are causing the damage, not those doing the RE.
I propose we rename it to 'code of hypocricy'...
I am sure you are aware there are problems in this world for which there is no perfect solution. If you want perfect solutions move to Utopia Island. In the meantime those who stay may suggest constructive alternatives.
I am sure you know that presenting a 'solution' to such a problem that does not solve anything at all, for no other reason than to pretend the problem is solved, is known as 'hypocrisy'...