Abandon  |  All  |  Hope  |  Ye  |  Who  |  Enter  |  The  |  Hall  |  Of  |  Bloat

/
 MBASIC
 Delphi
 OWL
 C++/C#
 MFC
 WScript
 Visual Basic
 OLE
 ActiveX/
  Visual.NET/
   Hellware*

The Bloatbusters™ Solar Winds Report


The Solar Winds DNS Resolver
Total download: 3.5MB
Total bloat on disk: over 4MB
Total Registry bloat: over 100KB
Overwritten system files: "legion"

The Bloatbusters™ DNS Resolver
Total download: 3KB
Total bloat on disk: 7KB
Total Registry bloat: none
Overwritten system files: none
Written to Solar Winds specifications

DNS Resolver
Solar Winds
3,666,493 bytes download
Price ?

Furor over Solar Winds software, which as a suite of less than ten "vanilla" networking applications retails for $300 (yes you read that right) has resulted in one grand and extensive test, which here follows.

The results of the test show conclusively that the suite cannot be worth even one one-hundredth of its retail price.

Bloataholics

Bloatbusters™ will shortly have a comparable app available which will demonstrate that the complete functionality of the Solar Winds DNS Resolver can be contained in a package of less than ten kilobytes (10KB).

FLASH! Bloatbusters™ now has this program available! And it is only SEVEN kilobytes! And you can download it here! The download is only THREE kilobytes!

(Yep! Yer thinking now! The Solar Winds DNS Resolver is OVER FIVE HUNDRED TIMES as big.)

This program - Bloatbusters™ DNS Resolver - is exactly identical with Solar Winds' DNS Resolver in the minutest detail - it looks the same, performs the same - it's even exactly as paraplegic!

But again - it's only seven kilobytes (7KB) - NOT 3.5 megabytes! Download it now and LEARN!


Preparing for and conducting the test as well as writing this report has taken more than a full day's work.

It's obvious that Dave and Don know their business, but it's equally obvious that they don't know software engineering one iota. The Solar Winds tools are written in Visual Basic, and according to the Solar Winds site, are ports of applications written initially for the UNIX operating system where they numbered into the 50s. This claim is however highly unlikely (meaning yes it's a lie or a gross exaggeration), and for two rather obvious reasons:

  1. Thankfully UNIX does not have Visual Basic. If Solar Winds had supplied fifty utilities to the UNIX platform, they would have been forced to use a real grown-up programming language, and then when porting to Windows would have naturally kept not only to the same language, but basically to the same code.

  2. If these utilities had been written for UNIX, then Solar Winds would have been using Berkeley Sockets and found no reason to lean on OCXs to do their job for them under Windows. The Berkeley Sockets API is eminently accessible even from Visual Basic: all one needs is know-how. If Solar Winds had in fact developed networking utilities for UNIX, they would have had this know-how.

The boys do know a bit about subnets, they know at least where to get the reference works, but aside from this one small fact, there is nothing at the Solar Winds site which is new and which has the potential to impress.

Solar Winds' DNS Resolver is a purportedly FREE application (more about that later), and chosen because it was one of the smallest (at 3.5MB) downloads available.

The total testing time itself was over three hours.

Observations:

  1. The amount of disk activity for this app is phenomenal. The actual executable is only 77824 bytes, or so it would seem - 77824 bytes for a dinky DNS program... before revealing the complete truth here, let's leave it at that. After the blitzkrieg install there seems to be precious little for that 4MB download in your install directory. Save for a nauseating number of URL files, of a few hundred bytes each, there is only that one executable, at 77824 bytes... let's leave it at that for now. Let's look at the application instead.

  2. First off, when you start up, it's the invasion of Poland all over again. Two windows hammer themselves onto your screen one after the other. The first is a flashy splash screen saying "Verifying Software License" (yes, despite the application being advertised as free - a cool 112KB on disk just this stupid screen), quickly followed by a Heinrich Himmler extravaganza, "Sorry, a valid registration key for DNS Resolver does not exist. The existing key is not valid. (Well, which is it, guys?) Continue with demo version/Enter license key now/Program demonstration expires in 29 days."

  3. Woah! This program was supposed to be FREE! It says so at several locations at the Solar Winds site!

In other words, Solar Winds entices you with the prospect of FREE software, gets you to give them your complete personal details, both email and terrestrial address and phone number, gets you to install, clogs your Registry with over 100,000 bytes of JUNK, and then, and ONLY then, when you finally start up the application, do you discover you've been cheated, HOODWINKED - it's a DEMO version, it is not free - and it's going to DIE too.

This is directly and deliberately deceptive. This is directly criminal.

But on we go. The next picture shows the initial program dialog. Yes, that's all you get. But it's actually worse than that: the application has no placement code. It always comes up (get ready with the flight bag) in the ABSOLUTE upper left hand corner of your desktop. EVERY TIME.

It has two items on the menu bar. Wonder what they contain? Any goodies there? Hardly. See what the File menu and the Help menu contain below. THERE IS NO DOCUMENTATION PROVIDED WITH THIS APPLICATION. NONE. For all that 4MB you just downloaded, they couldn't stuff a little dinky help file in there. Nothing.

Two tests at this point - both offline - and both worked (they can hardly fail, the code behind them is so simplistic), then time to exit (no, there's nothing more to the program than that). Again we get a fantastic nag screen for this "free" application. This nag screen says EXPLICITLY that one must PAY for this application - the site said repeatedly it was free. Yes, time to call the BBB and Elliot Ness.

Solar Winds commits the ultimate atrocity on the Start menu as well. Common courtesy demands you do not clutter it if you put anything there at all; Solar Winds goes to the extreme. But that's not the end of it either - that's only (and exactly) half of it, for they also put the exact same thing on the "Common" menu.

(It should be pointed out that these "shortcuts to shortcuts" assume Internet Explorer is operating as the default browser - but after all that's been uncovered now, it hardly comes as a shock.)


Let's review what's going on here - and please consult the screen dumps again to follow along.

DNSResolver for all that 3,666,493 of download, for all the nag screens, for all the threat of a hidden $30 price tag, is no more, and considerably less, than any other DNS utility available on the Internet today. Repeated: no more, and considerably less.

Yet at best DNS is admirably simple. On each client machine there is a TCP stack, and this TCP stack contains a hook-in or two, by way of the functions gethostbyaddr and gethostbyname. Both functions return a cute struct called a hostent. This is what a hostent looks like:

struct hostent {
    char FAR * h_name;
    char FAR * FAR * h_aliases;
    short h_addrtype;
    short h_length;
    char FAR * FAR * h_addr_list;
};

Even if you're not a programmer this isn't hard to follow. The h_name field is the FQDN (fully qualified domain name) of an IP or URL. h_aliases is a list of its aliases, e.g. microsoft.com might have www.microsoft.com as an alias, radsoft.net has ftp.radsoft.net and www.radsoft.net as its aliases. And so forth.

h_addrtype is not used by DNS Resolver. It's the address type - AF_INET in this example. h_length is the length of each address coming up in the field immediately following, h_addr_list. This list is the list of all possible IPs for the URL.

Now what does DNS resolver do for all that 3,666,493 bytes of code? Check your screen dumps again. If you punch the upper button, DNS Resolver does this:

    GetDlgItemText(...);
    gethostbyname(...);
    SetDlgItemText(...);

And if you punch the lower button, it does this:

    GetDlgItemText(...);
    gethostbyaddr(...);
    SetDlgItemText(...);

As stated, three lines of code. Even this code can be simplified of course, but we don't have to get into that. What's happening is just as easy to understand as the hostent:

    Get the text next to the button that's been punched.
    Pass that text string to either gethostbyname or gethostbyaddr.
    Put the IP or the URL in the other text field.

That's it.

This is a so totally useless application that the mind really boggles. Let's look a little deeper into the matter:

The hostent contains both IPs and all URLs, both the fully qualified domain name and all aliases, for any URL or IP queried. These are simple, straightforward function calls as we have seen. The only brain activity any DNS utility has to perform is thus the parsing of the input line. Normally these utilities will take either a URL or an IP and figure out themselves which is which.

But SolarWinds' DNSResolver doesn't even dare attempt this. Please consult the screen dumps again to verify for yourself. SolarWinds' DNSResolver has namely separate push buttons for resolving URLs and IPs. As for parsing the input instead as most DNS utilities do, well the author(s) of DNS Resolver at Solar Winds evidently did not feel up to the challenge of the task. YES, THIS APPLICATION IS THAT BAD.

And, still and all, remember, we need 77824 bytes. Once again, please look at what is involved:

  1. A dialog is presented. There are two input/output fields and two push buttons. The program now waits for user input.
  2. The user inserts a value into either of the two fields and pushes a button - hopefully the one next to the input field.
  3. If the upper button is pushed, the program gets the text string in the upper I/O field and sends it to gethostbyname.
  4. If the lower button is pushed, the program gets the text string in the lower I/O field and sends it to gethostbyaddr.
  5. The results are placed in the "other" I/O field on return.

This is child's play at worst, yet Solar Winds has avoided even the trivial programming issues that remained, reducing things beyond the skeletal and bleak. This is an immensely powerless and unsophisticated application.

But the 77824? Was that really the whole story? No it was not. For Solar Winds hides the extent of their install by putting most of the DNSResolver files not in the dedicated Program Files directory, but in the system directory!

The following files are copied into the system directory:

comcat.dll
comctl32.ocx
Dns40.ocx
ICMP40.ocx
mfc42.dll
msvbvm60.dll
SolarWinds.dll
SolarWinds.exe
THREED20.OCX

For a total of approx. 3.54MB. Please note as well that several important system DLLs are indiscriminately overwritten in the process - what Microsoft has aptly named "DLL Hell", what Microsoft and a lot of us are trying to fight.

And just contemplating what all the new files here are up to makes one shake. Dns40.ocx? ICMP40.ocx? A control for pinging? What's in the application then? And who said anything about pinging here anyway? A control for DNS? You really need a control for DNS for three lines of code, only one of which has anything vaguely to do with sockets and DNS at all?

Just when one assumed one had "seen it all", had seen the worst imaginable - along comes, to use Fidel's words, "the holy grail of bloat", and one realizes that there is truly no limit. Human stupidity is truly boundless - at least at Solar Winds.

And the activity... and the destruction caused... the system hive of the Registry (HKLM) increases by 126,976 bytes; the Registry monitor file guarding this system was 326,757 bytes.

The application cluttered the Start menu in not one, but two places: under Administrative Tools (Common) and in the particularly obnoxious location right above Programs on the first level.

What hurts the most was perhaps watching how the application - built recently, as it uses the MSVC 6.0 linker - produced what Microsoft now aptly calls "DLL Hell". After first locking down system32 to all but Read and Execute operations, and watching the installer just abort "just like that", and after copying the entire system32 to safekeeping and then opening it up to this monster, Solar Winds's installer - without a single hesitation or question - overwrote the works.


And we still haven't talked about how useless the application is, how displaying only one IP per hostname or hostname per IP doesn't even scratch the surface of the matter, how not displaying the address type therefore does not distinguish between different remotes on different nets, how Bloatbusters™ DNS Resolver is authentic DNS and Solar Winds' DNS Resolver is not, only getting data from the local hosts cache on disk - no we still haven't talked about any of that...

But this is not a review of a software product per se; this is an analysis of bloat and how bloat comes about, a demonstration of just how ugly commercial software has become these past ten years.

Edited by Beelzebub for Bloatbusters™

  Down

Abandon  |  All  |  Hope  |  Ye  |  Who  |  Enter  |  The  |  Hall  |  Of  |  Bloat
Copyright © bloatbusters.org. Web space courtesy Radsoft. We bust apps that suck.