Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat fromFile: to that image of the image with my program, I get an "unrecognized image format" error. I will keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Don’t forget to start off by checking the file size and some variety of hash - MD5 seems to be a common utility. And zip the file(s) when ending both for the obvious speed reason and as another sort of integrity check.
Or, consider not sending entire images, but using an update stream private to your project. Hell, you could even use my MQTTClient thing to subscribe to an update topic...
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Useful random insult:- A prime candidate for natural deselection.
Hi Tim,
I like the zip idea. Thanks. Can you please point me to a class that will un-zip a byte array or stream.
Lou
On Tue, 25 Jul 2017 10:01:04 -0700, tim Rowledge tim@rowledge.org wrote:
Dont forget to start off by checking the file size and some variety of hash - MD5 seems to be a common utility. And zip the file(s) when ending both for the obvious speed reason and as another sort of integrity check.
Or, consider not sending entire images, but using an update stream private to your project. Hell, you could even use my MQTTClient thing to subscribe to an update topic...
tim
ZipArchive is probably your friend here. Let's you do full zip file usage. Note that this both encodes and decodes.
If you really want to deal with individual arrays in some other format, look at the DeflateStream (and InflateStream). But I'd suggest working with ZipArchive first until it doesn't suite your needs.
-cbc
On Wed, Jul 26, 2017 at 7:10 AM, Louis LaBrunda Lou@keystone-software.com wrote:
Hi Tim,
I like the zip idea. Thanks. Can you please point me to a class that will un-zip a byte array or stream.
Lou
On Tue, 25 Jul 2017 10:01:04 -0700, tim Rowledge tim@rowledge.org wrote:
Don’t forget to start off by checking the file size and some variety of
hash - MD5 seems to be a common utility. And zip the file(s) when ending both for the obvious speed reason and as another sort of integrity check.
Or, consider not sending entire images, but using an update stream
private to your project. Hell, you could even use my MQTTClient thing to subscribe to an update topic...
tim
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies, I will address it as quickly as I can, but it might not be until tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat fromFile: to that image of the image with my program, I get an "unrecognized image format" error. I will keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will get fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies, I will address it as quickly as I can, but it might not be until tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat fromFile: to that image of the image with my program, I get an "unrecognized image format" error. I will keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will get fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies, I will address it as quickly as I can, but it might not be until tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat fromFile: to that image of the image with my program, I get an "unrecognized image format" error. I will keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Hey Dave,
I'm sure I'm messing something up but I can't find ImageFormat-dtl.26, they only go up to ImageFormat-dtl.12. Am I looking in the wrong place?
Lou
On Tue, 25 Jul 2017 14:06:30 -0400, "David T. Lewis" lewis@mail.msen.com wrote:
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will get fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies, I will address it as quickly as I can, but it might not be until tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat fromFile: to that image of the image with my program, I get an "unrecognized image format" error. I will keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file, which define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing in most cases), then you know that it is a Squeak image file, although this will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format number from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code is automatically generated from the ImageFormat package, so they the do the same thing. If you want to do the test from a shell script, as opposed to doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM simulator with the VMMaker package, but that would not be a practical test for what you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under test once you have confirmed that it runs.
Dave
Hi All,
Can a running Squeak program look at a Squeak image file and know if it is a good image? I'm working on a program that the user won't have easy access to. I would like to allow its replacement with a new version. I think I know how to do that but would like to see if I can program in some protection from the user replacing the image with a bad or completely wrong file. Any ideas?
Lou
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Lou,
So sorry, I think I need a new brain today. The repository is on source.squeak.org, not on squeaksource.com as I said in my earlier mail. The stuff on squeaksource.com is ancient, and all recent VM related work was moved to source.squeak.org a long time ago.
My apologies again!
Dave
Hey Dave,
I'm sure I'm messing something up but I can't find ImageFormat-dtl.26, they only go up to ImageFormat-dtl.12. Am I looking in the wrong place?
Lou
On Tue, 25 Jul 2017 14:06:30 -0400, "David T. Lewis" lewis@mail.msen.com wrote:
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will get fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies,
I
will address it as quickly as I can, but it might not be until
tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat
fromFile: to
that image of the image with my program, I get an "unrecognized image format" error.
I will
keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
A simple check is to look at the first bytes of the image file,
which
define the image format number. If the image format is something reasonable (presumably the same as whatever image you are replacing
in
most cases), then you know that it is a Squeak image file, although
this
will not tell you if the actual image is valid.
To do this from a running Squeak image, try loading the ImageFormat package from the VMMaker repository on squeaksource.com. Look at the class comments, and you will find methods for reading the image format
number
from a file stream.
There is also a C program called ckformat.c at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code
is
automatically generated from the ImageFormat package, so they the do
the
same thing. If you want to do the test from a shell script, as
opposed to
doing it from the running image, then you can use this C program.
Of course in theory you can load an entire image file into a VM
simulator
with the VMMaker package, but that would not be a practical test for
what
you are trying to accomplish.
If you need a better test of "valid" then you might consider using OSProcess/CommandShell to actually run the image file and see if it works. Probably you would do something like run it with a PipeableOSProcess connected to your main Squeak image, and just kill the image under
test
once you have confirmed that it runs.
Dave
> Hi All, > > Can a running Squeak program look at a Squeak image file and know
if it
> is > a good image? I'm > working on a program that the user won't have easy access to. I
would
> like to allow its > replacement with a new version. I think I know how to do that but > would > like to see if I can > program in some protection from the user replacing the image with
a bad
> or > completely wrong > file. Any ideas? > > > Lou > -- > Louis LaBrunda > Keystone Software Corp. > SkypeMe callto://PhotonDemon > > >
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Thanks Dave, I got it now. Don't beat yourself up, I appreciate the help even if it is slow in coming. After all, beggars can't be choosers. Hopefully one last question. Is there some method or methods, I can send the running image and the image file that allow me to conclude they are close in nature?
Lou
On Tue, 25 Jul 2017 15:06:49 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Lou,
So sorry, I think I need a new brain today. The repository is on source.squeak.org, not on squeaksource.com as I said in my earlier mail. The stuff on squeaksource.com is ancient, and all recent VM related work was moved to source.squeak.org a long time ago.
My apologies again!
Dave
Hey Dave,
I'm sure I'm messing something up but I can't find ImageFormat-dtl.26, they only go up to ImageFormat-dtl.12. Am I looking in the wrong place?
Lou
On Tue, 25 Jul 2017 14:06:30 -0400, "David T. Lewis" lewis@mail.msen.com wrote:
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will get fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago (some missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies,
I
will address it as quickly as I can, but it might not be until
tomorrow.
Sorry, Dave
Hi Dave,
Thanks you very much for the prompt reply. I loaded the ImageFormat package as you suggested into a fairly new 32 bit image. But when I try ImageFormat
fromFile: to
that image of the image with my program, I get an "unrecognized image format" error.
I will
keep trying more after lunch but for now I don't get it?
Lou
On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
>Hi Lou, > >A simple check is to look at the first bytes of the image file,
which
>define the image format number. If the image format is something >reasonable (presumably the same as whatever image you are replacing
in
>most cases), then you know that it is a Squeak image file, although
this
>will not tell you if the actual image is valid. > >To do this from a running Squeak image, try loading the ImageFormat >package from the VMMaker repository on squeaksource.com. Look at the > class >comments, and you will find methods for reading the image format
number
>from a file stream. > >There is also a C program called ckformat.c at >http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C code
is
>automatically generated from the ImageFormat package, so they the do
the
>same thing. If you want to do the test from a shell script, as
opposed to
>doing it from the running image, then you can use this C program. > >Of course in theory you can load an entire image file into a VM
simulator
>with the VMMaker package, but that would not be a practical test for
what
>you are trying to accomplish. > >If you need a better test of "valid" then you might consider using >OSProcess/CommandShell to actually run the image file and see if it > works. >Probably you would do something like run it with a PipeableOSProcess >connected to your main Squeak image, and just kill the image under
test
>once you have confirmed that it runs. > >Dave > >> Hi All, >> >> Can a running Squeak program look at a Squeak image file and know
if it
>> is >> a good image? I'm >> working on a program that the user won't have easy access to. I
would
>> like to allow its >> replacement with a new version. I think I know how to do that but >> would >> like to see if I can >> program in some protection from the user replacing the image with
a bad
>> or >> completely wrong >> file. Any ideas? >> >> >> Lou >> -- >> Louis LaBrunda >> Keystone Software Corp. >> SkypeMe callto://PhotonDemon >> >> >> > >
>
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
We don't have a meaningful "diff" between images. You could compare the list of package versions etc. but it's not foolproof as there might be modifications outside the packages.
Maybe it would help if you gave us a broader picture - are you just trying to update an application with a new image? That is, do you control what the new image is, or are users supposed to upload their own / arbitrary images?
If you control the image then I would simply do a checksum and verify that before replacing.
- Bert -
On Tue, Jul 25, 2017 at 9:24 PM, Louis LaBrunda Lou@keystone-software.com wrote:
Thanks Dave, I got it now. Don't beat yourself up, I appreciate the help even if it is slow in coming. After all, beggars can't be choosers. Hopefully one last question. Is there some method or methods, I can send the running image and the image file that allow me to conclude they are close in nature?
Lou
On Tue, 25 Jul 2017 15:06:49 -0400 (EDT), "David T. Lewis" < lewis@mail.msen.com> wrote:
Lou,
So sorry, I think I need a new brain today. The repository is on source.squeak.org, not on squeaksource.com as I said in my earlier mail. The stuff on squeaksource.com is ancient, and all recent VM related work was moved to source.squeak.org a long time ago.
My apologies again!
Dave
Hey Dave,
I'm sure I'm messing something up but I can't find ImageFormat-dtl.26, they only go up to ImageFormat-dtl.12. Am I looking in the wrong place?
Lou
On Tue, 25 Jul 2017 14:06:30 -0400, "David T. Lewis" <
lewis@mail.msen.com>
wrote:
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will
get
fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
Hi Lou,
Ugh, I think that was due to a bug that I fixed not too long ago
(some
missing methods for the latest Spur formats IIRC). I thought I had uploaded the fix but I do not see it in the repository. My apologies,
I
will address it as quickly as I can, but it might not be until
tomorrow.
Sorry, Dave
> Hi Dave, > > Thanks you very much for the prompt reply. I loaded the
ImageFormat
> package as you suggested > into a fairly new 32 bit image. But when I try ImageFormat
fromFile: to
> that image of the > image with my program, I get an "unrecognized image format" error.
I will
> keep trying more > after lunch but for now I don't get it? > > Lou > > > On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" > lewis@mail.msen.com wrote: > >>Hi Lou, >> >>A simple check is to look at the first bytes of the image file,
which
>>define the image format number. If the image format is something >>reasonable (presumably the same as whatever image you are replacing
in
>>most cases), then you know that it is a Squeak image file, although
this
>>will not tell you if the actual image is valid. >> >>To do this from a running Squeak image, try loading the ImageFormat >>package from the VMMaker repository on squeaksource.com. Look at
the
>> class >>comments, and you will find methods for reading the image format
number
>>from a file stream. >> >>There is also a C program called ckformat.c at >>http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C
code
is
>>automatically generated from the ImageFormat package, so they the
do
the
>>same thing. If you want to do the test from a shell script, as
opposed to
>>doing it from the running image, then you can use this C program. >> >>Of course in theory you can load an entire image file into a VM
simulator
>>with the VMMaker package, but that would not be a practical test
for
what
>>you are trying to accomplish. >> >>If you need a better test of "valid" then you might consider using >>OSProcess/CommandShell to actually run the image file and see if it >> works. >>Probably you would do something like run it with a
PipeableOSProcess
>>connected to your main Squeak image, and just kill the image under
test
>>once you have confirmed that it runs. >> >>Dave >> >>> Hi All, >>> >>> Can a running Squeak program look at a Squeak image file and know
if it
>>> is >>> a good image? I'm >>> working on a program that the user won't have easy access to. I
would
>>> like to allow its >>> replacement with a new version. I think I know how to do that
but
>>> would >>> like to see if I can >>> program in some protection from the user replacing the image with
a bad
>>> or >>> completely wrong >>> file. Any ideas? >>> >>> >>> Lou >>> -- >>> Louis LaBrunda >>> Keystone Software Corp. >>> SkypeMe callto://PhotonDemon >>> >>> >>> >> >> >> > -- > Louis LaBrunda > Keystone Software Corp. > SkypeMe callto://PhotonDemon > > >
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
Hi Bert,
Thanks for the help. I control the image. I would make a new version available.
The program runs headless on a Raspberry Pi. The user interfaces with it via a web browser. The system is a Seaside program that allows the user to control the GPIO pins from a web browser. Normally there wouldn't be a mouse or keyboard. The user wouldn't know where to put a new copy of the program.
The program would allow the user to do a file upload. I want to make a small number of checks of the new uploaded program before replacing the existing image. I want to protect the user from dumb mistakes like pointing the file upload to the wrong file. If the user points to a Squeak image that isn't the real program, they are on their own. That can be fixed but the program would no longer be able to help.
I don't know if a checksum would work as I don't know what the current program would be able to compare the checksum to. Unless I were able to append it to the end of the file or something like that.
Thanks again for any ideas.
Lou
On Tue, 25 Jul 2017 21:31:00 +0200, Bert Freudenberg bert@freudenbergs.de wrote:
We don't have a meaningful "diff" between images. You could compare the list of package versions etc. but it's not foolproof as there might be modifications outside the packages.
Maybe it would help if you gave us a broader picture - are you just trying to update an application with a new image? That is, do you control what the new image is, or are users supposed to upload their own / arbitrary images?
If you control the image then I would simply do a checksum and verify that before replacing.
- Bert -
On Tue, Jul 25, 2017 at 9:24 PM, Louis LaBrunda Lou@keystone-software.com wrote:
Thanks Dave, I got it now. Don't beat yourself up, I appreciate the help even if it is slow in coming. After all, beggars can't be choosers. Hopefully one last question. Is there some method or methods, I can send the running image and the image file that allow me to conclude they are close in nature?
Lou
On Tue, 25 Jul 2017 15:06:49 -0400 (EDT), "David T. Lewis" < lewis@mail.msen.com> wrote:
Lou,
So sorry, I think I need a new brain today. The repository is on source.squeak.org, not on squeaksource.com as I said in my earlier mail. The stuff on squeaksource.com is ancient, and all recent VM related work was moved to source.squeak.org a long time ago.
My apologies again!
Dave
Hey Dave,
I'm sure I'm messing something up but I can't find ImageFormat-dtl.26, they only go up to ImageFormat-dtl.12. Am I looking in the wrong place?
Lou
On Tue, 25 Jul 2017 14:06:30 -0400, "David T. Lewis" <
lewis@mail.msen.com>
wrote:
I guess I just forgot to upload it from my package-cache. Please try again with the ImageFormat-dtl.26 that I just uploaded, it should work now. Sorry for the confusion.
Dave
On Tue, Jul 25, 2017 at 01:54:43PM -0400, Louis LaBrunda wrote:
Hi Dave,
Thanks Dave. I will check tomorrow. For now I will assume it will
get
fixed and work around it.
Lou
On Tue, 25 Jul 2017 13:47:12 -0400 (EDT), "David T. Lewis" lewis@mail.msen.com wrote:
>Hi Lou, > >Ugh, I think that was due to a bug that I fixed not too long ago
(some
>missing methods for the latest Spur formats IIRC). I thought I had >uploaded the fix but I do not see it in the repository. My apologies, I >will address it as quickly as I can, but it might not be until tomorrow. > >Sorry, >Dave > > >> Hi Dave, >> >> Thanks you very much for the prompt reply. I loaded the
ImageFormat
>> package as you suggested >> into a fairly new 32 bit image. But when I try ImageFormat fromFile: to >> that image of the >> image with my program, I get an "unrecognized image format" error. I will >> keep trying more >> after lunch but for now I don't get it? >> >> Lou >> >> >> On Tue, 25 Jul 2017 11:18:05 -0400 (EDT), "David T. Lewis" >> lewis@mail.msen.com wrote: >> >>>Hi Lou, >>> >>>A simple check is to look at the first bytes of the image file, which >>>define the image format number. If the image format is something >>>reasonable (presumably the same as whatever image you are replacing in >>>most cases), then you know that it is a Squeak image file, although this >>>will not tell you if the actual image is valid. >>> >>>To do this from a running Squeak image, try loading the ImageFormat >>>package from the VMMaker repository on squeaksource.com. Look at
the
>>> class >>>comments, and you will find methods for reading the image format number >>>from a file stream. >>> >>>There is also a C program called ckformat.c at >>>http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/src/. The C
code
is >>>automatically generated from the ImageFormat package, so they the
do
the >>>same thing. If you want to do the test from a shell script, as opposed to >>>doing it from the running image, then you can use this C program. >>> >>>Of course in theory you can load an entire image file into a VM simulator >>>with the VMMaker package, but that would not be a practical test
for
what >>>you are trying to accomplish. >>> >>>If you need a better test of "valid" then you might consider using >>>OSProcess/CommandShell to actually run the image file and see if it >>> works. >>>Probably you would do something like run it with a
PipeableOSProcess
>>>connected to your main Squeak image, and just kill the image under test >>>once you have confirmed that it runs. >>> >>>Dave >>> >>>> Hi All, >>>> >>>> Can a running Squeak program look at a Squeak image file and know if it >>>> is >>>> a good image? I'm >>>> working on a program that the user won't have easy access to. I would >>>> like to allow its >>>> replacement with a new version. I think I know how to do that
but
>>>> would >>>> like to see if I can >>>> program in some protection from the user replacing the image with a bad >>>> or >>>> completely wrong >>>> file. Any ideas? >>>> >>>> >>>> Lou >>>> -- >>>> Louis LaBrunda >>>> Keystone Software Corp. >>>> SkypeMe callto://PhotonDemon >>>> >>>> >>>> >>> >>> >>> >> -- >> Louis LaBrunda >> Keystone Software Corp. >> SkypeMe callto://PhotonDemon >> >> >> > >
>
Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon
On 25-07-2017, at 1:21 PM, Louis LaBrunda Lou@Keystone-Software.com wrote:
I don't know if a checksum would work as I don't know what the current program would be able to compare the checksum to. Unless I were able to append it to the end of the file or something like that.
That’s partly why I would suggest trying a zip file with the image file and a checksum (plus possibly other data?) in it. If the zip file doesn’t get transmitted properly it shouldn’t open, giving one clue of failure. I if does, you read the expected checksum and unzip the putative image file to compare it with.
I’m still inclined to think that private update stream approach would be easier to live with.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim "Bollocks," said Pooh being more forthright than usual
Hi Tim,
On Wed, 26 Jul 2017 12:58:03 -0700, tim Rowledge tim@rowledge.org wrote:
On 25-07-2017, at 1:21 PM, Louis LaBrunda Lou@Keystone-Software.com wrote:
I don't know if a checksum would work as I don't know what the current program would be able to compare the checksum to. Unless I were able to append it to the end of the file or something like that.
Thats partly why I would suggest trying a zip file with the image file and a checksum (plus possibly other data?) in it. If the zip file doesnt get transmitted properly it shouldnt open, giving one clue of failure. I if does, you read the expected checksum and unzip the putative image file to compare it with.
Adding the checksum in a small file in the zip file could be worth it.
Im still inclined to think that private update stream approach would be easier to live with.
I'm not sure as to exactly what you are suggesting here but don't forget the program is running on a Raspberry Pi that may not be connected to the internet. The user is expected to obtain a new image onto some other computer and then upload it to the Raspberry Pi via the programs Seaside web interface.
Lou
Hi Bert, Tim and Dave,
Thanks for the help. I am now able to replace a running image on the fly. I allow the user to do a file upload (this is a Seaside program interfacing with a web browser). The file can be a new image (should be supplied by me) or a zip (file type must be .zip) of the same file. The running image is never saved so the changes file is not needed.
I check that the file is a valid image and if it is, I replace the running image and reboot the system, which will restart with the new image.
Lou
squeak-dev@lists.squeakfoundation.org